峰值内存使用量不超过限制

pra*_*ams 6 java garbage-collection jvm memory-management

我看到使用-Xmx2g时,峰值内存达到1G并进行主要收集(markweep collector).使用-Xmx3g,它达到1.5G并进行主要收藏.使用-Xmg4g,它达到2G并进行主要收集.但是,从这里我尝试将最大内存增加到6G,8G,12G,并且峰值内存达到2G的所有时间都会进行主要收集.

如何使用超过2G?我没有遇到任何设置.-Xms在这里有用吗?那些-Xmx,我做了-Xms的一半-Xmx.

我正在使用Jetty,Java 1.6.024.

更新:是的,我使用的是64位JVM.我正在使用的JVM选项是:-Xmx6g -Xms3g -XX:MaxPermSize = 256m我确定峰值内存的方法是查看JConsole中的内存图.它达到2G并下降(主要收集).旧Gen达到1.5G最大然后下降发生.

谢谢,Prams.

Pet*_*rey 1

您有三个内存区域:伊甸园、幸存者和永久空间。

我怀疑发生的事情是,当您增加最大大小时,终身或伊甸园空间不会增长。

这两个区域很重要的原因是,当tenured空间填满时,会触发Full GC(我怀疑这个大小正在增长)。当eden空间填满并且survivor空间中没有足够的空间来复制剩下的所有对象时,会触发full GC。 GC也会被触发。

如果这是问题的原因,则您正在创建大量中等寿命的对象,这可能会导致性能问题,除非您可以减少创建的数量。另一种方法是指定一个更大的新大小,这会增加 eden 大小。

尝试-mx12g -XX:NewSize=10g - verbosegc

最后一个选项将为您提供清理后各个空间的大小。