JVM ARGS'-Xms1024m -Xmx2048m'在Java 8中仍然有用吗?

cod*_*erz 28 java jvm jvm-arguments java-8

我有一个使用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)
Run Code Online (Sandbox Code Playgroud)

我想知道JVM ARGS -Xms1024m -Xmx2048m是否还在工作?

由于Java 8已经删除了Perm Generation:http://www.infoq.com/articles/Java-PERMGEN-Removed,我认为Java 7和Java 8之间的不同GC策略/内存管理可能是根本原因.有什么建议吗?

Tag*_*eev 27

由于PermGen删除,一些选项被删除(如-XX:MaxPermSize),但选项-Xms-XmxJava 8中的工作.在Java 8下,您的应用程序可能只需要更多的内存.尽量增加-Xmx价值.或者,您可以尝试使用切换到G1垃圾收集器-XX:+UseG1GC.

请注意,如果您使用在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)
Run Code Online (Sandbox Code Playgroud)

  • 在这种特殊情况下:与CMS不同,它没有两个幸存者空间,其中一个无法访问.在实践中,使用相同的Xmx值G1收集器为应用程序提供更多内存.如果您想了解有关G1的更多详细信息,请提出单独的问题,此评论字段对于此类讨论而言太短. (5认同)
  • G1垃圾收集器有什么好处? (3认同)