【发布时间】:2012-05-16 07:04:00
【问题描述】:
我正在尝试调整 GC,使其在短期基准测试期间不会启动。
为此,我尝试将年轻一代设置得尽可能大,并确保我创建的垃圾少于 Eden 大小。
我使用了以下参数:
java -Xmx1g -Xms1g -Xmn1g -XX:NewSize=1000m -XX:MaxNewSize=1g -XX:SurvivorRatio=10000 -verbose:gc Main
但由于某种原因,当 VM 内存仅为 300M 时,我仍然会看到 [Full GC] 日志,是否缺少任何 JVM 调整?
【问题讨论】:
-
不看你的代码真的很难说。也许您可以想出一个简短的可运行示例(出乎意料地)表现出这种行为,并将其发布在这里?这将使我们能够对其进行试验,并了解到底发生了什么。
-
谢谢,我会尝试创建一个。这是否意味着总体上您认为我可以实现预期目标?
-
原则上可以(前提是您的代码不会产生足够的垃圾来要求收集)。
-
正如我在问题中所写,我看到完整的 GC 在 300M 时启动,而我有 1G。
-
这些是我们看到的 GC 日志:[Full GC 444212K->53612K(1048512K), 0.1674871 secs] [Full GC 98878K->53600K(1048512K), 0.1353826 secs] [Full GC 117736K-> 53600K(1048512K),0.1126983秒] [全GC 96769K-> 53600K(1048512K),0.1046997秒] [全GC 202470K-> 53600K(1048512K),0.1597075秒] [全GC 56930K-> 53600K(1048512K),0.1134397秒] [全GC 267471K-> 53756K(1048512K),0.1372057秒] [全GC 54990K-> 53756K(1048512K),0.1068497秒] [全GC 160691K-> 53912K(1048512K),0.1366148秒] [全GC 122243K-> 53913K( 1048512K), 0.1218144 秒] [完整 GC 360042K->53922K(1048512K), 0.1614036 秒]
标签: java performance garbage-collection jvm benchmarking