Использование 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 /, наконец, блокировать и использовать PMF:
PersistenceManager pm = pmf.getPersistenceManager();
try {
//do stuff
}
finally {
pm.close();
}
что правильный способ распоряжаться PMF Синглтон так как не вызвать утечку памяти, о которой сообщает plumbr?
Вы хранить любые объекты в полях сервлет? Ваши сервлеты создаются один раз и являются одиночными. – NamshubWriter