【发布时间】:2014-01-09 15:35:07
【问题描述】:
关于这个问题有很多问题,但没有一个答案让我满意;我正在使用 Swing 编写一个简单的 GUI 窗口。目前它只包含 4 个按钮,其中一个是打开文件选择器。
当我使用 VisualVM Monitoring 工具查看内存使用情况时,结果如下所示:
memory usage http://img17.imageshack.us/img17/3589/8txc.png
当我点击按钮时,第一个派克出现了,然后我什么也没做。
空闲应用程序消耗 10M/min 是否正常(当它不做任何事情时?)
由于我必须使用图像做一个类似测验的小程序,我是否应该在每次切换到下一个问题时调用System.gc() 以避免(可能很大?)内存使用?
【问题讨论】:
-
以编程方式调用 system.gc() 经常无济于事,因为现代垃圾收集器实现有自己的启发式方法来进行清理或不清理。我不确定您的代码为什么会这样做,这可能是正常的(请发布整个代码,以便我可以尝试使用 jconsole)。看看它在 6 分钟执行时间内的演变也会很有趣。
-
“关于这个问题有很多问题,但没有一个答案让我满意” 什么,而不是这些问题的答案之一指出,看着记忆Java 应用程序。与连续数小时凝视自己的肚脐一样有用吗?当您看到
OutOfMemoryError时担心它,那么您有需要修复的内存泄漏。否则:如果它没有坏,就不要修理它。 -
Jorge_B:whiskeyspider 的回应表明你是对的;我应该等待更长的时间。 AndrewThompson:这是一种关心记忆的奇怪方式,但我会在未来尝试应用你的建议 :-)
标签: java swing memory-management jvm