我开始在Java客户端的Java JRE的32位的窗口,与Java的GC暧昧日志消息
java -Xmx1024m -Xms1024m -verbose:gc -XX:+PrintGCDetails -jar myJar.jar
我的罐子中包含大量的数据,其留在(双打,600ish MB的表)内存为应用程序的整个生命周期。
它然后给出记录消息,约每分钟,说:
[GC [DefNew:279616K-> 279616K(314560K),0.0002037秒] [终身:595827K-> 599952K(699072K),1.1020398秒] 875443K-> 599952K(1013632K),[彼尔姆:10042K-> 10042K(16384K)],1.1030218秒] [时间:用户= 1.09 SYS = 0.01,真= 1.11秒]
和我真的不明白大胆的部分。它说新一代从279616K变为279616K(即没有任何变化),老一代略有增加(595827K-> 599952K),但总计说875443K-> 599952K,即减少了约30%。怎么会这样?
编辑:要完全清楚,我期望如果我添加279616K + 595827K = 875443K,我会以粗体显示第一部分,即总堆大小。同样地,我预计279616K + 599952K会以粗体显示第二部分,但不会。在下面指定的链接Java Garbage Collection Log messages中,它确实是加起来的,所以我可能错过了一些东西。
您是否使用Sun JDK?如果是这样,你可能想看看[Java调优白皮书](http://java.sun.com/performance/reference/whitepapers/tuning.html)。其次,你能提供更多的背景吗?即操作系统,过程数据模型(32位或64位)... – 2011-03-21 19:12:00
我首先想了解当前日志消息说什么之前,我想优化一些东西(在我的情况下,NewRatio = 4并使用并发GC解决了我的问题)。 – 2011-03-21 19:33:05