JBoss 7.1.1의 JavaEE6 프로젝트 (EJB3, JSF2)에서 @ViewScoped 빈을 사용한 메모리 누수가있는 것 같습니다. 지난 수일 동안이 문제 조사에 시간을 보냈습니다. 그래서 첫 페이지가 @ViewScoped 빈을 떠난 후에 릴리스 될 것이라는 것을 보장하기 위해 두 페이지로 된 간단한 프로젝트를 만들었습니다.연결된 ViewScoped 빈이 메모리 누수로 이어짐
<context-param> //web.xml
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>false</param-value>
</context-param>
TreeBean.java
@ManagedBean
@ViewScoped
public class TreeBean implements Serializable {
private TreeNode root;
public static AtomicInteger count = new AtomicInteger(0);
@Override
protected void finalize() throws Throwable {
System.out.println("TreeBean beans count: " + count.decrementAndGet() + " (FINALISATION)");
}
public TreeBean() {
super();
System.out.println("TreeBean beans count: " + count.incrementAndGet() + " (INITIALISATION)");
}
first.xhtml
....
<h:form id="frm">
<p:tree
value="#{treeBean.root}"
var="node"
id="tree">
....
<p:commandLink
action="second.xhtml?faces-redirect=true"
value="toSecond" />
....
second.xhtml
....
<h:form id="frm">
....
<p:commandLink
action="first.xhtml?faces-redirect=true"
value="toFirst" />
....
SYSOUT :
,369 나는 다른 @ViewScoped 콩TreeBean.java
@ManagedBean
@ViewScoped
public class TreeBean implements Serializable {
private TreeNode root;
@ManagedProperty(value = "#{treeNodeBean}")
private TreeNodeBean treeNodeBean;
public static AtomicInteger count = new AtomicInteger(0);
@Override
protected void finalize() throws Throwable {
System.out.println("TreeBean beans count: " + count.decrementAndGet() + " (FINALISATION)");
}
public TreeBean() {
super();
System.out.println("TreeBean beans count: " + count.incrementAndGet() + " (INITIALISATION)");
}
TreeNodeBean.java
@ManagedBean
@ViewScoped
public class TreeNodeBean implements Serializable {
private String treeNodeItem="TreeNodeItem";
}
에 그리고 아무도 후에 의존성을 추가 한까지 1,363,210
INFO [stdout] (http--0.0.0.0-8080-4) TreeBean beans count: 1 (INITIALISATION)
INFO [stdout] (http--0.0.0.0-8080-4) TreeBean beans count: 2 (INITIALISATION)
INFO [stdout] (http--0.0.0.0-8080-4) TreeBean beans count: 3 (INITIALISATION)
......
INFO [stdout] (Finalizer) TreeBean beans count: 2 (FINALISATION)
INFO [stdout] (Finalizer) TreeBean beans count: 1 (FINALISATION)
INFO [stdout] (Finalizer) TreeBean beans count: 0 (FINALISATION)
모든 생각 잘했다 콩이 풀렸다. 누군가 그것을 다루는 방법을 알고 있습니까? 이 버그가 있거나 어딘가에 구성 될 수 있습니까?
이 링크를 참조하십시오. vievscoped는 짧은 기간의 사용자 작업을 위해 설계되었지만, JSF 2.1 및 2.2에 대한 작업은 완료되었습니다. http://stackoverflow.com/questions/12182844/memory-leak-with-viewscoped-bean –