我正在尝试将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
我有这些问题:
它显示正在创建字符串对象的数量。 (但是我们怎么知道在什么类/ servlet中确切地知道哪个字符串实际上负责这个对象的创建,因为我们在应用程序中可能有很多字符串。)??
为什么开始按钮(我高调)被禁用?
通过点击开始按钮(请看图片)启动JProfiler就足够了,我们还需要启动Tomcat服务器吗?
请帮忙。谢谢 。
答案 0 :(得分:2)
你必须使用堆walker。动态内存视图无法显示有关引用的任何信息,因为必须创建快照。
有关如何使用JProfiler查找内存泄漏的详细信息,请参阅this screen cast。