老一代GC运行的百分比是多少?

时间:2018-02-13 22:16:21

标签: java performance

当我运行“jmap -heap”时,我得到以下内容

enter image description here

如果你注意到,PS Old Generation只使用了9%多一点,而Eden使用了4.5%。 在发生次要GC时Eden的百分比是多少? PS老一代的百分比是什么阻止世界GC发生?

2 个答案:

答案 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出现次数。

例如,

参考附件。

enter image description here

答案 1 :(得分:0)

保持简单:

当JVM没有空间用于新的Object示例时,会触发次要GC:Eden已满。 尝试命令:jstat -gc -t 5000 1s看到年轻一代的行为。

关于 PS老一代的百分比是什么阻止了世界GC的发生?

即使是次要的GC也会停止应用程序线程,导致世界停止。(但它相对可以忽略不计)

每次触发次要或主要GC或完整gc时都会停止世界事件,并检查何时触发完整GC。 主要GC正在清理Tenured空间。 Full GC正在清理整个堆 - 包括Young和Tenured空间。

您可以设置标志以根据您用于GC的算法对其进行修改。