Java Swing内存使用情况

时间:2014-01-09 15:35:08

标签: java swing memory-management jvm

关于这个问题有很多问题,但没有答案让我满意;我正在使用Swing编写一个简单的GUI窗口。目前它只包含4个按钮,其中一个是打开文件选择器。

当我使用VisualVM监视工具查看内存使用情况时,结果显示如下:

memory usage http://img17.imageshack.us/img17/3589/8txc.png

当我点击按钮时出现第一个长矛,然后我什么也没做。

空闲应用程序正常消耗10M / min(当它没有做任何事情时?)

由于我必须使用图像做一个类似quizz的小程序,每次切换到下一个问题时我是否应该使用System.gc()来避免(可能是巨大的?)内存使用?

2 个答案:

答案 0 :(得分:2)

我可以通过一个简单的测试程序重新创建您所看到的内容,但是如果您让显示器跟踪一段时间......

enter image description here

CPU一直处于0%(只是一个开放的JFileChooser坐在那里)。内存波动很奇怪,但我认为JVM必须做各种后台管理和维护任务。这项工作将使用最终建立的内存。并且它会定期自行清理。

要考虑的另一件事是在已分配的堆中使用此内存。你的程序实际上是在整个时间内使用一致的量的实内存,正如你从橙色的平面线上看到的那样。

答案 1 :(得分:0)

我认为问题出在JFileChooser上。当我使用它时,我注意到,fileChooser正在“等待”某些东西。当我错误地关闭程序时,fileChooser会抛出一个错误。也许这会对你有帮助:)。