Java 新一代发电能力不增加
我一直在查看来自jstat(-gc选项)的日志,发现我们的应用程序正在花费大量时间进行新一代收集 我们已将最大堆大小设置为16gigs(无最小值) 根据jstat日志,这些是初始容量: S0C:2112 S1C:2112 欧共体:17024 主管:63872 在一天剩下的时间里,S0C、S1C、EC都没有增加,尽管我们似乎有大量的新一代活动,并且花了很多时间去做。然而,旧容量增加了 通过设置-XX:NewSize=6G,我在UAT中运行了一个比较测试,应用程序的性能要好得多(新一代事件很少,在GC中的时间也少得多) 我的问题是:为什么新一代的容量没有随着我们原来的设置而增加?是否期望我最初必须分配更多内存 我们使用的是JVM热点1.6 以下是JVM默认值中“新建”的grep:Java 新一代发电能力不增加,java,garbage-collection,heap-size,Java,Garbage Collection,Heap Size,我一直在查看来自jstat(-gc选项)的日志,发现我们的应用程序正在花费大量时间进行新一代收集 我们已将最大堆大小设置为16gigs(无最小值) 根据jstat日志,这些是初始容量: S0C:2112 S1C:2112 欧共体:17024 主管:63872 在一天剩下的时间里,S0C、S1C、EC都没有增加,尽管我们似乎有大量的新一代活动,并且花了很多时间去做。然而,旧容量增加了 通过设置-XX:NewSize=6G,我在UAT中运行了一个比较测试,应用程序的性能要好得多(新一代事件很少,在G
uintx MaxNewSize = 18446744073709486080{product}
intx NewRatio = 2 {product}
uintx NewSize = 1310720 {product}
uintx NewSizeThreadIncrease = 5320 {pd product}
intx PartialPeelNewPhiDelta = 0 {C2 product}
bool UseNewLongLShift = false {product}
bool UseParNewGC = false {product}
我对hotspot 1.6上的CMS工效学还不是很确定,但如果您希望hotspot动态移动年轻一代的边界,可能必须启用自适应大小调整策略并调整相关选项 或者升级到更新的JVM,并尝试使用G1GC,G1GC肯定支持自适应大小调整 这也可能是因为CMS没有为新一代使用完整的可用大小,因为否则它无法实现其某些目标,例如次要的gc暂停时间目标。确保新一代使用多线程GC,而不是串行GC
我建议启用详细GC日志记录,并查看它对小代的作用。您使用的是哪些GC设置?大小调整策略取决于所使用的GC实现。可能通过-XX:+PrintFlagsFinal转储设置:-Xmx16384M-XX:+UseConMarkSweepGC