JVM ARGSを使用するJava 7アプリケーションがあります:-Xms1024m -Xmx2048m
、それは非常にうまく動作します。
Java 8にアップグレードした後、次の例外を含むエラー状態で実行されます。
Exception in thread "main" Java.lang.OutOfMemoryError: GC overhead limit exceeded
at org.hibernate.engine.StatefulPersistenceContext.addEntry(StatefulPersistenceContext.Java:466)
at org.hibernate.engine.TwoPhaseLoad.postHydrate(TwoPhaseLoad.Java:80)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.Java:1439)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.Java:1332)
at org.hibernate.loader.Loader.getRow(Loader.Java:1230)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.Java:603)
at org.hibernate.loader.Loader.doQuery(Loader.Java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.Java:259)
at org.hibernate.loader.Loader.doList(Loader.Java:2228)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.Java:2125)
at org.hibernate.loader.Loader.list(Loader.Java:2120)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.Java:118)
at org.hibernate.impl.SessionImpl.list(SessionImpl.Java:1596)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.Java:306)
JVM ARGS -Xms1024m -Xmx2048m
がまだ機能しているかどうか疑問に思っていますか?
Java 8によってPerm Generationが削除されたため、 http://www.infoq.com/articles/Java-PERMGEN-Removed で、_Java 7およびJava 8が根本原因である可能性があります。何か提案はありますか?
PermGenの削除により、いくつかのオプションが削除されました(-XX:MaxPermSize
など)が、オプション-Xms
および-Xmx
はJava 8で機能します。Java 8ではアプリケーションは、いくぶんより多くのメモリを必要とします。 -Xmx
値を増やしてみてください。または、-XX:+UseG1GC
を使用してG1ガベージコレクターに切り替えることもできます。
Java 8で削除されたオプションを使用すると、アプリケーションの起動時に警告が表示されることに注意してください。
$ Java -XX:MaxPermSize=128M -version
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128M; support was removed in 8.0
Java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
私が知っているのは、いくつかのGCサイクルの後にメモリの2%が解放されたときに「GCオーバーヘッド制限を超えました」エラーがスローされる理由の1つです
このエラーにより、JVMは、アプリケーションがガベージコレクションに多くの時間を費やしていることを通知しています。そのため、GCがクリーニングできなかった少量がすぐに再びいっぱいになり、GCがクリーニングプロセスを再開します。
-Xmx
と-Xms
の値を変更してみてください。