Я создаю свое первое приложение JSF. Для этого вопроса я собираюсь упростить все, чтобы попытаться сделать мой вопрос максимально понятным.
Приложение, которое я создаю, представляет собой простое приложение для хранения контактов, которое позволит вам создать новый контакт, сохранить информацию, такую как адреса, номера телефонов, где они работают, и загрузить файлы, связанные с контактом.
При загрузке приложения отображается пользователь со списком уже созданных контактов. Они могут щелкнуть изображение контакта, чтобы открыть контакт и просмотреть всю информацию, хранящуюся на них. Вот тут и приходит мой вопрос.
Вся эта информация хранится в управляемом компоненте ContactManager.java . Все данные о контакте отображаются в таблицах данных. Таким образом, есть адрес с данными, телефон с данными, загружаемые данные. Каждое представление с датами находится на соответствующей вкладке. Я использую Primefaces для создания вкладок. Таким образом, в основном, когда контакт открыт, система должна загрузить около 10 списков данных, а также раскрывающиеся списки, используемые для выбора значений. заполнить эти таблицы данных во вкладках.
@ManagedBean
@ViewScoped
public class ContactManager implements Serializable {
private Contact contactInfo;
private List<Phone> phones;
private List<Addresses> addresses;
private List<Company> jobs;
private List<Files> uploads;
//dropdown select lists
private List<Country> countryList;
private List<State> stateList;
//Getters and setters for everyting
..... (I am not going to type it all out but its there)
@PostConstruct
public void openContact() {
try {
this.countryList = myDao.getCountryList();
this.stateList = myDao.getStateList();
this.addresses = myDao.getAddresses(contactInfo.contactId);
this.phones = myDao.getPhones(contactInfo.contactId);
this.jobs = myDao.getJobs(contactInfo.contactId);
this.uploads = myDao.getUploads(contactInfo.contactId);
}
}
}
Таким образом, в основном, когда пользователь открывает контакт, вся эта контактная информация загружается в память, чтобы ее можно было отобразить в представлении.
Этот пример мал по сравнению с фактическим количеством списков и данных, которые я храню, но для упрощения меня интересует управление памятью.
Моя система будет использоваться несколькими пользователями, и загрузка всей этой информации беспокоит меня. Когда очищается память, выделенная для всего этого? Я несу ответственность за его очистку?
Если у меня есть 10 пользователей, и все они просматривают контакты с действительно большими таблицами с большим количеством данных, я боюсь, что это остановит все.
В настоящее время он отлично работает в моей системе, но я знаю, что все эти таблицы и списки хранятся в памяти до тех пор, пока пользователь не щелкнет и не откроет новый контакт или не закроет приложение.
Любое понимание того, является ли это правильным способом ведения дел или как обрабатывать такую большую информацию, было бы замечательно.
Я использую JSF 2.0 / Primefaces 2.2RC2-Snapshot