繁体   English   中英

Java内存泄漏迹象

[英]Java Memory leakage signs

我一直在做一个应用程序,我一直在跟踪它的内存使用情况。 应用程序的内存大约为58,676 K,如下所示。 在此输入图像描述

这是我的GUI。

在此输入图像描述

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

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出现并再次关闭它就可以再次增加应用程序的内存使用量。

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

在此输入图像描述

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

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

最简单的工具来分析。

  1. Netbeans带有一个内置的分析器。
  2. Jconsole也可以帮助一点
  3. VisualVm也可以帮助一点。

另请参阅此链接如何分析heapdumps

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

在NetBeans中,“运行项目”和“调试项目”按钮旁边的顶部是“配置文件项目”按钮(Alt-F2)。

首次运行时,它可能会要求您进行校准或其他操作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM