我的 javaFX
应用程序似乎有内存泄漏
问题,我一直在使用 net beans profiler 工具来帮助我找到泄漏源,但我有撞墙了,因为我不确定自己在做什么。
现在我看了教程,他们说要监控一个对象的 surviving generations
但我仍然不确定如何使用这些信息。我在监视我的应用程序时截取了最高 surviving generation
对象的屏幕截图。
有人可以向我解释我应该如何处理这些对象,或者它们是否真的导致了内存泄漏
?
最佳答案
意外的高内存使用率的一个常见来源是将对象添加到集合中,然后在完成后不删除它们(我看到您发布的图像显示了一个 HashMap,这可能是一个问题)。典型的解决方案是使用一个集合,一旦所有其他对它的引用都消失,该集合将不会使对象保持 Activity 状态,请参见 WeakHashMap了解更多信息。
要深入研究这些类型的问题,请进一步捕获一个 hrpof(您可以使用 VisualVM、JConsole 等),然后在 Eclipse MAT 中对其进行分析。或类似的工具。
关于java - 应用程序中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157096/