JVM 是否曾经将内存返还给之前为堆分配的操作系统?
例如,我有一个设置为 -Xmx5120M 的 JVM,我实际上已经使用了所有的内存,做的事情会导致堆填满。假设发生了完整的 GC,这会显着降低实际堆使用量。这种下降是否会导致总堆大小减少,大概是略高于实际使用水平,并且“清除”的内存返回给操作系统?或者分配给 JVM 的内存是否会保持在高级别,即使它现在可能不会“主动”使用堆中的所有内存。
我猜是瘦身vs囤积。
编辑:我对 Sun/Oracle JVM(即 1.6.0_33、1.7+ 等)感兴趣