我有一個JSF應用程序和@ViewScoped
bean。這是viewScoped
,因爲我做了一些Ajax請求。JSF ViewScoped OutOfMemoryException
我將大量數據加載到視圖中並將其顯示給用戶。
今天我進行了負載測試,並遇到OutOfMemoryException
。事實證明,當我打開網頁,@PostConstruct
被稱爲
bean created. ID = @54a35e23
現在我導航到另一個頁面,並再次返回(@PreDestroy
不叫),然後我得到
bean created. ID = @fee0948
我在負載測試中重新做了這個。幾個小時後,我有OutOfMemoryException
當我導航到另一個頁面時,我能以某種方式強制JSF銷燬我的ViewScoped
bean嗎?
你使用CDI還是打開? OmniFaces @ ViewScoped'在onload期間顯式銷燬bean和關聯的JSF視圖狀態。但它需要CDI。另請參閱http://showcase.omnifaces.org/cdi/ViewScoped – BalusC
我使用java ee 6並且沒有CDI。另外我非常接近上線,所以我不想改變很多。沒有其他辦法嗎? – matthias
JSF(Mojarra)在會話中保留最多25個視圖範圍的bean。改變它的內存空間。或者,引入第二級JPA緩存(如果您使用的是JPA)。 – BalusC