我有一個Java應用程序,下面有參數,但即使總空閒空間更大,堆也沒有被回收比45%(可以通過視覺虛擬機看到)。是否有任何理由說JVM不會釋放堆空間?相同的設置在Java6中按預期工作。運行Java5運行時和編譯時間Java5 -XX:MaxHeapFreeRatio = 45即使有超過45%的堆空閒時也不會釋放堆
java -jar -Xmx1024m -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=45 -XX:+HeapDumpOnOutOfMemoryError <myjarname>
Crossposted到Oracle的Java論壇:https://forums.oracle.com/forums/thread.jspa?threadID=2311208&tstart=0。 – EJP
JVM很貪婪,有時需要運行兩次主要的GC才能釋放內存。 –
由於Java 5.0的生命週期已經過去了幾年,可能是更新到Java 6或7的時候了。 –