当我运行“jmap -heap”时,我得到以下内容
如果你注意到,PS Old Generation只使用了9%多一点,而Eden使用了4.5%。 在发生次要GC时Eden的百分比是多少? PS老一代的百分比是什么阻止世界GC发生?
答案 0 :(得分:1)
确切的百分比会因您使用的算法而异。
参考https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/
最佳解决方案:转到java bin ex:java-1.8.0-oracle / bin。 并运行jstat -gc -t PID 1s并在主要是次要gc被触发时看到自己。
它将为您提供所有主要和次要GC参数的当前内存大小和GC出现次数。
例如,参考附件。
答案 1 :(得分:0)
保持简单:
当JVM没有空间用于新的Object示例时,会触发次要GC:Eden已满。 尝试命令:jstat -gc -t 5000 1s看到年轻一代的行为。
关于 PS老一代的百分比是什么阻止了世界GC的发生?
即使是次要的GC也会停止应用程序线程,导致世界停止。(但它相对可以忽略不计)
每次触发次要或主要GC或完整gc时都会停止世界事件,并检查何时触发完整GC。 主要GC正在清理Tenured空间。 Full GC正在清理整个堆 - 包括Young和Tenured空间。
您可以设置标志以根据您用于GC的算法对其进行修改。