gpt4 book ai didi

Java 内存使用量在最大堆大小内保持良好,但我的系统内存正在慢慢被吃掉

转载 作者:行者123 更新时间:2023-11-29 06:06:38 24 4
gpt4 key购买 nike

我是 Java 编程的新手,所以请耐心等待我尝试了解这里发生的事情。

我开发的应用程序使用的最大堆大小为 256MB。随着 GC 的完成,我从来没有遇到任何问题。使用过的堆在加载大图像时累积,并在卸载时很好地释放。我还没有看到内存不足错误。

但是... 运行该应用程序大约一个小时。我注意到该进程使用越来越多的系统内存,这些内存永远不会被释放。所以应用程序开始使用大约 160MB,随着堆大小的增长而增加,但是当堆大小缩小时,使用的系统内存只会越来越多。直到进程使用 2.5GB,我的系统开始变慢。

现在我正试图了解幸存的几代人。似乎堆大小和幸存的世代并没有真正相互联系?我的应用程序建立了很多幸存的世代,但我从来没有根据应用程序本身使用的内存耗尽内存。但是 JVM 一直在消耗内存,从不将其还给系统。

我在网上搜索,有时会找到一些有用的信息。但我没有得到的是,应用程序在堆大小边界内保持良好状态,但我的系统内存仍在被耗尽。

这是怎么回事?

我在 OSX Lion 上使用带有最新 1.6 JDK 的 NetBeans IDE。

最佳答案

最好的开始方式是在同一台机器上使用来自 JDK 的 jvisualvm。附加到您正在运行的程序并启用分析。

另一种选择是尝试在 Debug模式下运行应用程序并偶尔停止它以检查您的数据结构。这听起来像是一种错误/奇怪的做法,但通常如果您有内存泄漏,它就会变得非常明显。

祝你好运!

关于Java 内存使用量在最大堆大小内保持良好,但我的系统内存正在慢慢被吃掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8332793/

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