Java5 -XX:即使超过45%的堆是免费的,MaxHeapFreeRatio = 45也不会释放堆

我有一个带有以下参数的java应用程序,但即使总可用空间大于45%(通过可视VM可以看到),堆也不会被回收。 是否有任何理由让JVM无法释放堆空间? 相同的设置在Java6中按预期工作。 运行Java5运行时和编译时

java -jar -Xmx1024m -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=45 -XX:+HeapDumpOnOutOfMemoryError  

我们相信我们已经找到了问题的答案。 我们运行的系统是具有多个CPU的服务器类机器,JRE正在检测多个CPU并将GC设置为使用并行而不是串行GC,这与XX:MaxHeapFreeRatio设置不兼容。

唯一一个为我的系统提供内存的GC是G1GC -XX:+UseG1GC