GC堆大小和程序内存开销

时间:2012-07-28 03:39:28

标签: java memory garbage-collection overhead heap-size

我正在试图弄清楚我的应用程序发生了什么。

问题:

  • GC调用并没有尽可能多地减少未使用的堆大小,但是它应该使用串行GC(或UseParNewGC)和激烈的堆比率。

  • 程序中使用的内存总是比当前使用和未使用的堆大很多,我认为即使包含其他JVM内存+堆

  • 也是如此

使用的命令行:

java -XX:+UseSerialGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -Xmx2500M -cp XXXXXX.jar xxxx.xxxx.xxxx
pause

尝试使用UseParNewGC,结果相同

系统: Win7 SP1 4GB RAM + 4GB交换文件 2.99GHZ Java 1.7 + JDK 1.7

请看图片让事情更清楚: http://i.stack.imgur.com/i3sxw.jpg

1 个答案:

答案 0 :(得分:1)

尝试将New Generation设置为允许短期对象死亡的大小,而不是设置自由比率。尝试尽可能少地推广Old Generation

请记住,大号Young Generation会变成大型集合。

然后将最大Old Generation设置为不会花费太长时间到完整GC的大小,但不会经常运行它们。