JVM是否在不再需要时向操作系统提供可用内存?

cre*_*zel 14 java memory heap jvm

我有一个应用程序临时需要一些特定的内存/堆用于某些进程.给定JVM作为选项的最大堆大小的合理值,JVM从一个小堆开始,并根据需要从OS请求更多内存.

我的问题是,如果我的应用程序不再需要大量内存,那么JVM会将更多内存返回给操作系统(例如,用于其他进程).目前我的应用程序似乎永远保留了内存,即使不再需要.

Mic*_*rdt 25

JVM确实将内存返回给操作系统,但只是非常不情愿,因为它可能很快就会再次需要它,并且从操作系统获取内存是一项相对昂贵的操作.

如果你想在JVM内存更急切地返回到OS,您可以使用了Oracle JVM的调整参数,特别是-XX:MaxHeapFreeRatio-XX:MinHeapFreeRatio