gpt4 book ai didi

Java 内存性能 - 奇怪的行为(或者这是正常的?)

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:09 25 4
gpt4 key购买 nike

你好我想首先说我是初学者,但我正在开发一个非常小且简单的 Java 应用程序,它真的不应该引起一些重大问题。我从 Windows 任务管理器监视内存使用情况,并注意到在我的应用程序启动时,java.exe 使用了大约 70MB 的可用内存。所以我心想,好吧,这可能有点大,但我的电脑仍然可以处理。但真正奇怪的事情开始发生,当我试图调整我的窗口大小时,内存使用量突然跃升至 80-90 MB,如果我继续拖动我的窗口,随机调整大小,它会不断增加内存使用量。我认为这与在窗口调整大小时调用 GUI 组件的重绘方法有关,所以我采取了一些可能导致某种内存泄漏的可疑组件,并从我的主窗口表单中删除了它们,使我的程序几乎完全被剥离,但这个问题仍然存在。后来我注意到,如果我继续调整窗口大小,内存使用量会增长到 200-220 MB,然后会停止这种不受控制的增长。那么有人可以告诉我,考虑到 Java 中的内存管理,这是正常行为吗?

最佳答案

创建的 Java 对象在完成后不一定会被清除。相反,称为“垃圾收集器”的东西会定期在后台运行以查找孤立对象并删除它们,从而释放内存。

您的应用程序在调整窗口大小时可能会创建大量临时对象。尽管不再被任何对象(即孤儿)引用,但这些对象仍然存在,直到垃圾收集器运行。

您可能会发现您的最大内存是 256M(默认值)——当您接近最大内存时,垃圾收集器可能被更频繁地调用,并且创建新对象需要立即释放内存——因此内存徘徊在 256M 以下,因为创建/删除率按需求平衡。

这是完全正常的行为。

关于Java 内存性能 - 奇怪的行为(或者这是正常的?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6249015/

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