我在CentOS 64位Linux機器上使用jdk 1.7.0_09。爲什麼JVM在老一代只有一半滿的時候連續地完成gc?
相關VM ARGS由GC是
-Xmx4g -Xmn2g -XX:SurvivorRatio = 4 -XX:PermSize =128米-XX:MaxPermSize參數=128米-XX:InitialTenuringThreshold = 15 -XX:CMSWaitDuration = 50 -XX:MaxTenuringThreshold = 15 -XX:+ UseConcMarkSweepGC -XX:+ UseParNewGC -XX:CMSInitiatingOccupancyFraction = 80 -XX:+ CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize =128米
但它一直在做完整的GC
jstat -gcutil pid 1000
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 15.62 57.52 19.90 11 2.081 11109 7454.686 7456.767
0.00 0.00 15.81 57.52 19.90 11 2.081 11109 7454.686 7456.767
0.00 0.00 15.81 57.51 19.90 11 2.081 11111 7454.892 7456.973
0.00 0.00 16.06 57.51 19.90 11 2.081 11111 7455.115 7457.196
0.00 0.00 16.06 57.51 19.90 11 2.081 11111 7455.115 7457.196
0.00 0.00 16.27 57.51 19.90 11 2.081 11111 7455.115 7457.196
0.00 0.00 16.27 57.51 19.90 11 2.081 11111 7455.115 7457.196
0.00 0.00 16.29 57.51 19.90 11 2.081 11111 7455.115 7457.196
0.00 0.00 16.29 57.51 19.90 11 2.081 11111 7455.115 7457.196
0.00 0.00 16.29 57.47 19.90 11 2.081 11113 7455.549 7457.629
0.00 0.00 16.29 57.47 19.90 11 2.081 11113 7455.549 7457.629
0.00 0.00 16.34 57.47 19.90 11 2.081 11113 7455.549 7457.629
0.00 0.00 16.34 57.47 19.90 11 2.081 11113 7455.549 7457.629
0.00 0.00 16.34 57.47 19.90 11 2.081 11113 7455.549 7457.629
0.00 0.00 16.42 57.47 19.90 11 2.081 11114 7455.549 7457.629
0.00 0.00 16.42 57.44 19.90 11 2.081 11115 7455.986 7458.067
我同意。使用的標誌表明這是一個Google搜索配置。 如果你真的想要「-XX:InitialTenuringThreshold = 15 -XX:CMSWaitDuration = 50 -XX:MaxTenuringThreshold = 15」,你應該知道爲什麼。 (然後你會知道它們並不重要) –
更糟的是,這些標誌通常是純粹的最佳努力,默認情況下已啓用,或者不做它們看起來要做的事情。即使是'-ms'和'-mx'(通常稱爲'-Xms'和'-Xmx')也不符合大多數人的想法。 –
@FabianLange我們將我們的應用程序與gc標誌的不同設置進行了基準對比,並最終解決了這個問題。我們知道一些配置只是一個建議。 – Timmy