【发布时间】:2013-05-22 05:25:31
【问题描述】:
我目前正在开发一个应用程序,它需要大约每 20 毫秒快速执行一次(是的,我知道,一开始就不应该使用 Java)。我做了很多优化代码的工作,所以它不会太计算贪婪。但是,正如我所见,我可能没有在 GUI 和内存优化方面付出足够的努力。我的应用程序可以以我想要的速度运行,但在 1-2 分钟后它会急剧变慢,这表明存在内存问题。
我确实在 NetBeans 下运行了分析器,发现大部分内存都被 javax.swing.text.GapContent$MarkData 占用了
然后在谷歌上搜索,我发现几乎没有什么可以帮助我解决这个问题。那么有没有人可以帮助我?我的第一个猜测是垃圾收集器运行的时间不够长,无法擦除未使用的对象……但我没有比这更多的线索。
【问题讨论】:
-
为了获得帮助,您必须添加一些代码..
-
好吧,实际上有成千上万行代码。我想知道从哪里开始。
-
Swing 因所有这些内存堆积而臭名昭著(我不会称之为内存泄漏)。最好重用 Swing 元素,而不是每次都重新实例化它们。
-
+1 代表profiling;现在使用
Profile > Profile Project > CPU查找和定位热点。 -
@trashgod 该死,无法相信,速度变慢是由于每次迭代都会关闭并打开与数据库的连接(通过 Wi-Fi 连接)的函数。很高兴现在存在这样的工具......如果没有,我肯定不会发现问题。