Kan*_*ani 5 java heap memory-management runtime
您好,我想首先说我是初学者,但我正在开发一个非常小而简单的Java应用程序,这真的不应该导致一些重大问题.我正在监视来自Windows任务管理器的内存使用情况,并注意到我的应用程序启动后,java.exe使用了大约70MB的可用内存.所以我心想,好吧,这可能有点大,但是,我的电脑无法处理.但是当我试图调整窗口大小时,内存使用率突然跳到80-90 MB,如果我继续拖动窗口,随机调整大小,它会继续增加内存使用量.我认为这与在窗口调整大小期间调用GUI组件上的重绘方法有关,所以我采取了一些可能导致某种内存泄漏的可疑组件,并从我的主窗口表单中删除了那些,使我的程序几乎完全被剥离,但这个问题仍然存在.我后来注意到的是,如果我继续调整窗口大小,内存使用量会增加到200-220 MB,然后在那里停止这种不受控制的增长.那么有人可以告诉我,这可能是一个正常的行为,考虑到java中的内存管理?
创建的 Java 对象在使用完毕后不一定会被清除。相反,称为“垃圾收集器”的东西会定期在后台运行,查找孤立对象并删除它们,从而释放内存。
您的应用程序在调整窗口大小时可能会创建大量临时对象。尽管不再被任何对象(即孤儿)引用,这些对象仍会一直挂在垃圾收集器运行之前。
您可能会发现您的最大内存为 256M(默认值) - 当您接近最大内存时,垃圾收集器可能会被更频繁地调用,并且新对象的创建需要立即释放内存 - 因此内存徘徊低于 256M,因为创建/删除率由需求平衡。
这是完全正常的行为。
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |