我有一个可观的Java应用程序,可以创建描述图形的复杂数据结构,从原始时间戳数据点开始并显示绘图,分析它等。试图找到我的java swing代码中的内存泄漏
当我尝试处理一系列这些绘图时,我清楚地以JScrollPane的形式挂在内存上,用于保存绘图,但我无法弄清楚原因。保存滚动窗格的变量会被重新分配,每个新文件都会被加载,但是我注意到RepaintManager正在维护其invalidComponents列表中先前显示的窗格的列表。这看起来好像挂在每个图形的存储器上,不久我就有1GB的内存在使用,当我连续处理文件时,应该永远不会有超过一个图形的内存使用。
我得到了内存转储,并用Eclipse内存分析器和YourKit进行了分析。
这就是我认为的铁证Eclipse的内存分析器显示:
花了相当长的一段试图深入到这个问题。我非常感谢任何关于我的错误可能在哪里或如何解决问题的建议。
我意识到如果不能深入研究代码就很难分辨,但如果有关于在哪里寻找的一般建议/注意事项,那就太好了。
考虑提供一个[runnable示例](https://stackoverflow.com/help/mcve),它演示了您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将导致更少的混淆和更好的响应 – MadProgrammer
您是否删除旧的滚动条?可能不是创建新的,而应该简单地重用现有的并改变viewportView组件 – MadProgrammer