使用JDO JDOPersistenceManager,我不断收到来自Plumbr内存泄漏检测报告,什么是创建和销毁JDOPersistenceManagerJDOPersistenceManager内存泄露
正确的方式Plumbr报告:
在
创建的对象org.datanucleus.api.jdo.JDOPersistenceManagerFactory.newPM(org.datanucleus.api.jdo.JDOPersistenceManagerFactory, java.lang.String, java.lang.String):838
和正在举行
in key of java.util.HashMap$Entry
in table of java.util.HashMap
in map of java.util.HashSet
in pmCache of org.datanucleus.api.jdo.JDOPersistenceManagerFactory
in pmf of com.example.MyServlet
最后一行,pmf是启动对象并在请求生命周期中使用的单例。 MyServlet是一个httpservlet,一个doPost被调用。
PMF.java:
public class PMF {
private static PersistenceManagerFactory instance;
public static PersistenceManagerFactory get() {
if (instance == null) {
Properties props = new Properties();
props.setProperty("javax.jdo.PersistenceManagerFactoryClass",
"org.datanucleus.api.jdo.JDOPersistenceManagerFactory");
props.put("datanucleus.PersistenceUnitName", "pmf");
instance = JDOHelper.getPersistenceManagerFactory(props);
}
return instance;
}
}
通常我使用PMF例如在try/finally块,并使用PMF:
PersistenceManager pm = pmf.getPersistenceManager();
try {
//do stuff
}
finally {
pm.close();
}
是什么处置PMF singlton的所以正确的方法因为不会导致由plumbr报告的内存泄漏?
你存储在你的servlet领域的任何对象?您的servlet只创建一次,并且是单身人士。 – NamshubWriter