我有一个带有以下参数的java应用程序,但即使总可用空间大于45%(通过可视VM也能看到),堆也不会被回收。是否有任何理由让JVM无法释放堆空间?相同的设置在Java6中按预期工作。运行Java5运行时和编译时间
java -jar -Xmx1024m -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=45 -XX:+HeapDumpOnOutOfMemoryError <myjarname>
答案 0 :(得分:7)
我们相信我们已经找到了问题的答案。我们运行的系统是具有多个CPU的服务器类机器,JRE正在检测多个CPU并将GC设置为使用并行而不是串行GC,这与XX:MaxHeapFreeRatio设置不兼容。
答案 1 :(得分:2)
唯一一个为我的系统提供内存的GC是G1GC -XX:+UseG1GC