GC堆大小和程序内存开销



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

问题:

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

  • 使用中的程序内存总是比当前使用和未使用的堆大得多,在我看来,即使包含其他JVM内存+heap ,也太多了

使用的命令行:

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

尝试使用UseParNewGC,结果相同

系统:Win7 SP14GB RAM+4GB交换文件2.99GHZJava 1.7+JDK 1.7

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

与其设置空闲比率,不如尝试将New Generation设置为能够使短命对象死亡的大小。尝试将尽可能少的内容提升到Old Generation

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

然后,将最大Old Generation设置为一个大小,该大小不需要太长时间来填满GC,但不会持续运行它们。

相关内容

  • 没有找到相关文章

最新更新