JProfiler:查找内存泄漏引用名称

时间:2011-10-22 22:20:02

标签: java profiling jprofiler

我正在尝试将JProfiler用于我的一个在tomcat服务器下运行的Application。

所以我写了一个内存泄漏servlet,如下所示。

@SuppressWarnings(value = { "" })
public class Dust extends HttpServlet {
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    String str = new String();
    List myarrylist = new ArrayList();
    int i = 10;
        while (true) {
    myarrylist.add(str);
    System.out.println(i);
        i++;
    }
}
}

现在当我使用本地运行的Profile Web Application在此应用程序上运行JProfiler时。 它给了我这个观点。请看这里拍摄的屏幕

http://tinypic.com/view.php?pic=2r5c2nq&s=7

我有这些问题:

  1. 它显示正在创建字符串对象的数量。 (但是我们怎么知道在什么类/ servlet中确切地知道哪个字符串实际上负责这个对象的创建,因为我们在应用程序中可能有很多字符串。)??

  2. 为什么开始按钮(我高调)被禁用?

  3. 通过点击开始按钮(请看图片)启动JProfiler就足够了,我们还需要启动Tomcat服务器吗?

  4. 请帮忙。谢谢 。

1 个答案:

答案 0 :(得分:2)

你必须使用堆walker。动态内存视图无法显示有关引用的任何信息,因为必须创建快照。

有关如何使用JProfiler查找内存泄漏的详细信息,请参阅this screen cast