Java VM - 释放的内存是否返回操作系统?

时间:2010-03-10 17:52:59

标签: java memory memory-management jvm

在Java运行时,如果我的应用程序释放内存,运行时是否会将内存释放回操作系统?或者回到我的流程?

2 个答案:

答案 0 :(得分:4)

这取决于JVM实现,并且未在规范中指定。

Sun JVM将作为第一步保留它。一旦某个(可配置的)已分配内存百分比未被使用,它就会将其中的一部分返回给操作系统(行为受到MinHeapFreeRatio and MaxHeapFreeRatio settings的影响)。

答案 1 :(得分:1)

首先回到流程,但最终还是可以回到操作系统。 GC分配的内存位于一个大的连续块(​​堆)或一组块中,GC“释放”只是释放堆中的分配,但不一定回到操作系统。 GC压缩后,VM可能会将一些内存返回给操作系统。

GC希望保留一定的空间,以便能够快速为未来的“新”内存请求提供服务。因此,GC尽可能地向操作系统请求大段内存。