我正在創建我的第一個JSF應用程序。對於這個問題,我將簡化所有的事情,儘量讓我的問題儘可能清楚。JSF - 託管Bean和內存管理問題中的對象列表
我創建的應用程序是一個簡單的聯繫人存儲的應用程序,將允許您創建新的聯繫人,存儲信息,如地址,電話號碼,他們在哪裏工作,並上傳相關聯的聯繫人文件。
當應用程序加載用戶顯示與已創建的聯繫人列表。他們可以點擊聯繫人的圖片打開聯繫人並查看存儲在其上的所有信息。這是我的問題進來的地方。
所有這些信息都存儲在ContactManager.java管理bean中。聯繫人上的所有數據都顯示在數據表中。所以有一個地址數據表,手機數據表,上傳數據表。每個數據表視圖駐留在適當的選項卡中。我正在使用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快照
您是否想過儘快使用`@ RequestScope`來釋放內存(在請求被提供之後)或者關於使用`@ ViewScope`使用Ajax調用以及`@ PostConstruct`方法中的特定加載以及按需加載數據(標籤切換)? – Gaim 2011-02-07 15:51:28