JSF ViewScope OutOfMemoryException
我有一个带有JSF ViewScope OutOfMemoryException,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我有一个带有@ViewScopedbean的JSF应用程序。它是viewscope,因为我做了一些ajax请求 我将大量数据加载到视图中,并将其显示给用户 今天我执行了一个负载测试,遇到了一个OutOfMemoryException。事实证明,当我打开页面时,@PostConstruct被调用 bean已创建。ID=@54a35e23 现在我导航到另一个页面并再次返回(@PreDestroy未被调用),然后我得到 bean已创建。ID=@fee0948 在负载测试中,我重新做了一遍。几个小时后,
@ViewScoped
bean的JSF应用程序。它是viewscope
,因为我做了一些ajax请求
我将大量数据加载到视图中,并将其显示给用户
今天我执行了一个负载测试,遇到了一个OutOfMemoryException
。事实证明,当我打开页面时,@PostConstruct
被调用
bean已创建。ID=@54a35e23
现在我导航到另一个页面并再次返回(@PreDestroy
未被调用),然后我得到
bean已创建。ID=@fee0948
在负载测试中,我重新做了一遍。几个小时后,我出现了OutOfMemoryException
当我导航到另一个页面时,是否可以强制JSF销毁我的
ViewScoped
bean?如果您的ViewScoped bean很大,那么您的实现就有问题。你能添加你的来源来回顾一下吗。如果要处理大量数据,可能需要使用Infinispan或Hazelcast之类的内存网格您是使用CDI还是开放?OmniFaces@ViewScoped
在onload期间显式销毁bean和相关的JSF视图状态。但它需要CDI。另请参见我使用JavaEE6而不使用CDI。另外,我很快就要上线了,所以我不想改变很多。没有其他方法吗?JSF(Mojarra)在会话中最多保留25个视图范围的bean。改变那个上面的内存空间。或者,引入二级JPA缓存(如果你正在使用JPA的话)。我能以某种方式将25减少到3吗。没有公共设置。但是当我想在我的页面中使用一些ajax请求时,我必须使用ViewScope或SessionScope,对吗?是的,但我说的是你在页面上显示的数据,你在显示哪些组件?