这个问题几乎说明了一切.我们应该使用什么支持JVM GC以及什么配置来最大程度地减少应用程序中的GC影响?
编辑:Linux Ubuntu 64位:
java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02,mixed mode)
解决方法
从J2SE 5.0开始,并行收集器默认情况下在服务器级机器上进行选择,详见垃圾收集器人体工程学.此外,并行收集器使用自动调整的方法,允许指定所需的行为,而不是生成大小和其他低级调优细节.可以指定的行为是:
最大垃圾回收暂停时间
吞吐量
足迹(即堆大小)
使用命令行选项-XX:MaxGCPauseMillis =指定最大暂停时间目标.这被解释为希望暂停时间为毫秒或更短的提示;默认情况下没有最大暂停时间目标.如果指定了暂停时间目标,则调整堆大小和其他垃圾回收相关参数,以避免垃圾回收暂停时间短于指定值.请注意,这些调整可能会导致垃圾收集器降低应用程序的总体吞吐量,并且在某些情况下,无法满足所需的暂停时间目标.
摘自http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#par_gc.ergonomics