Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF ViewScope OutOfMemoryException_Jsf_Jsf 2_Primefaces - Fatal编程技术网

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,对吗?是的,但我说的是你在页面上显示的数据,你在显示哪些组件?