Javaアプリケーションでメモリリークが遅いです。 Entitymanagerを使用したときにEntityManagerを閉じるとは限りません。しかし、myeclipseを使用してDBコードを生成すると、次のようなメソッドが得られます。エンティティマネージャはメモリリークを引き起こしますか?
public Meit update(Meit entity) {
logger.info("updating Meit instance");
try {
Meit result = getEntityManager().merge(entity);
logger.info("update successful");
return result;
} catch (RuntimeException re) {
logger.error("update failed");
throw re;
}
}
これは決してEntityManagerを閉じることはありません。これが生成されたコードであると考えて、私は誰が正しいのか、私かIDEかを疑問に思っています。
私はメモリを持って知っていますアプリケーションが数週間おきにクラッシュし、メモリ不足が発生するため、リークが発生します。それはウェブアプリです。私はeclipselinkを使用しています。私はEMが閉鎖されるべきだと思った: http://stackoverflow.com/questions/220374/do-i-have-to-close-every-entitymanager – GBa
手でEMFを作成していますか? Webアプリケーションでは、受け入れられた答えのように注入する必要があります。その場合は、手動で作成したり閉じたりしてはいけません。この写真には春ですか? – cletus
私はTomcatを使用しているので、EJBがないため、注入することはできません。 EMを作成するためにEntityManagerFactoryを使用しています。私はセッションが期限切れになるとどうにかして、これらがクリーンアップされていないと推測しています。 – GBa