这是一个长期运行的服务器应用程序,它创建了大量短暂的垃圾,并且在启动后几乎没有任何终身.大多数时候年轻人的收集速度很快,即使10 gb也很快,因为它几乎都是垃圾,但我们偶尔会看到残酷的异常值.作为潜在的提示,我们在具有更多CPU资源但内存减少12 gb的计算机上以较低负载运行类似配置的服务器.我们没有看到这种模式.
java -Xms20g -Xmx20g -Xloggc:"./ logs/gc.log"-XX:+ PrintGCDetails -XX:+ PrintGCDateStamps -XX:NewRatio = 1 -XX:+ DisableExplicitGC -XX:+ UseSpinning -XX:PreBlockSpin = 1000 - XX:-UseCounterDecay -XX:+ UseTLAB -XX:+ TieredCompilation -XX:ReservedCodeCacheSize = 512m
这是GC日志的片段.可以说它花了全部时间实际执行GC工作(例如,而不是等待线程达到安全点)因为系统时间也很长吗?
2013-12-13T14:04:50.388 + 0000:56748.603:[GC [PSYoungGen:10363808K-> 1248K(10421824K)] 10569323K-> 207003K(20907584K),0.0035110 secs] [次:用户= 0.03 sys = 0.00,real = 0.00秒]
2013-12-13T14:17:32.245 + 0000:57510.460:[GC [PSYoungGen:10363808K-> 1600K(10435072K)] 10569563K-> 207563K(20920832K),0.0038460 secs] [次:用户= 0.04 sys = 0.00,real = 0.01秒]
2013-12-13T14:29:08.572 + 0000:58206.787:[GC [PSYoungGen:10381824K-> 1408K(10430912K)] 10587787K-> 207875K(20916672K),0.0045710 secs] [次:用户= 0.04 sys = 0.00,real = 0.01秒]
2013-12-13T14:36:25.176 + 0000:58643.391:[GC [PSYoungGen:10381632K-> …