将初始烫发大小和最大烫发大小设置为相同以防止完整GC

时间:2012-10-03 01:05:46

标签: java garbage-collection

作者是否建议将初始烫发大小和最大烫发大小值设置为相同的值可能会阻止完整的GC发生?

  

一个存储器空间,无论是旧的或永久的,已满,以适应新的对象或类,它需要   要在实现它的最大尺寸扩大,如果相关参数有不同的值。换句话说,如果   -Xms和-Xmx有不同的值,如果旧的大小需要从-Xms -Xmx朝增加   以容纳更多的对象,一个FullGC被调用。同样,如果-XX:PermSize和-XX:MaxPermSize参数有   不同的价值观和永久性空间需要向-XX增加:MaxPermSize参数来   适应新的Java类,一个FullGC被调用。 可以通过总是设置-Xms和-Xmx避免   的以及-XX:PermSize和-XX:MaxPermSize参数为相同的值

Java性能调优白皮书: http://mfinocchiaro.files.wordpress.com/2008/07/java-virtual-machine-neutral.pdf

1 个答案:

答案 0 :(得分:2)

我认为他是这么说的。

但我不认为他是对的。当然,我不记得曾经在任何Sun / Oracle官方文件中看到过这一点。

请注意:

  • 链接的“白皮书”不是Oracle / Sun文档。
  • 作者不是Oracle / Sun员工。
  • 本文相当陈旧,指的是Java 4和Java 5 JVM。

应该可以通过启用GC日志记录并查看完整的GC与堆扩展之间是否存在关联来为此获取证据。


我(经常)听说将初始和最大堆大小设置为相同可以减少JVM预热开销。断言/暗示每个堆扩展之前都有一个我怀疑的完整GC。