gpt4 book ai didi

java - 有没有办法在不使用时降低 Java 堆?

转载 作者:IT老高 更新时间:2023-10-28 20:30:25 26 4
gpt4 key购买 nike

我目前正在开发一个 Java 应用程序并努力优化它的内存使用。据我所知,我正在遵循正确垃圾收集的准则。但是,似乎我的堆似乎处于最大大小,即使它不是必需的。

当计算机不被人使用时,我的程序每小时运行一次资源密集型任务。该任务使用了相当大的内存块,但在任务完成后立即将其全部释放。 NetBeans 分析器显示内存使用情况如下所示:

Java program memory usage

我真的很想在不使用时将所有堆空间还给操作系统。我没有理由在程序至少再过一个小时内什么都不做的情况下占用这一切。

这可能吗?谢谢。

最佳答案

您也许可以使用 -XX:MaxHeapFreeRatio - 这是在 GC 收缩之前可用的堆的最大百分比(默认为 70)。也许将它设置得低一点(40 或 50?)然后使用 System.gc() 可能会花费一些时间来获得所需的行为?

没有办法强制这种情况发生,但是您可以尝试并鼓励 JVM 这样做,但您不能随心所欲地拉出内存。虽然上述可能会缩小堆,但不一定会将内存直接交还给操作系统(尽管在最近的 JVM 实现中确实如此。)

关于java - 有没有办法在不使用时降低 Java 堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com