Java内存泄漏迹象

时间:2014-05-06 01:03:00

标签: java windows memory desktop

我一直在申请,我一直在跟踪其内存使用情况。该应用程序的内存约为58,676 K,如下所示。 enter image description here

这是我的GUI。

enter image description here

那个关闭按钮有一个使该面板不可见的功能。

private final ActionListener closeButtonAL = new ActionListener(){

    @Override
    public void actionPerformed(ActionEvent e) {
        timeUtilities.getPanel().setVisible(false);
    }

};

我还有一个按钮,可以再次显示面板。

private final ActionListener showPanelAL = new ActionListener(){

    @Override
    public void actionPerformed(ActionEvent e) {
        timeUtilities.getPanel().setVisible(true);
    }

};

在应用程序开始显示之前,该面板已经初始化。

我的问题是,只需让GUI出现并再次关闭它就可以再次增加应用程序的内存使用量。

这不是某种内存泄漏吗?无论答案是什么,我该如何预防此事?

enter image description here

2 个答案:

答案 0 :(得分:1)

不,这可能不是内存泄漏的迹象。因为当您关闭并多次打开gui时,您的应用可能会创建并丢弃某些对象。但是JVM可能还没有垃圾收集它们。如果你想要真实的图片使用分析工具。 GC运行后,随着时间的推移进行堆转储。这将告诉你内存中还剩下什么。

这可以帮助您缩小寻找可能的内存泄漏的范围。

最简单的分析工具。

  1. Netbeans附带一个内置的分析器。
  2. Jconsole也可以帮助
  3. VisualVm也可以提供帮助。
  4. Also see this link how to analyze heapdumps

答案 1 :(得分:1)

您应该使用分析器来查找内存泄漏。

在NetBeans中,"运行项目"旁边的顶部;和#34;调试项目"按钮是一个"个人资料项目"按钮(Alt-F2)。

首先,它可能会要求您进行校准或其他事情。

Afterwars,您可以选择分析CPU或内存。如果单击Memory,请选中" Simple,"然后单击“运行”,您可以运行项目并查看使用内存的内容。