JProfiler学习笔记(转二)

上一篇 / 下一篇  2012-01-13 17:30:03 / 个人分类:其它

选择Web容器是否和Jprofiler一起运行:

默认即可

 

配置提示:

 在“远程控制”的时侯要仔细阅读一下。

 

然后选择立即起动,开始运行。

 

 

点击“OK”,我们可以看到另外一个小窗口出来了:

 

Jprofiler的窗口为:

 

这样我们就可以进行监控了!

(五)    开始测试

1. IE地址栏中输入:http://localhost/test/init1.jsp,执行一次,我们可以在内存视图中看到cn.test.TestBean对象被创建了10000次:

 

2.标记现在的状态,然后再执行init1.jsp,init2.jsp可以让我们找到哪些类在调用后没有被释放(很重要!!!)

 

查看哪些类被发生了变化:

红色的变成是发生变化的对象及其数量。

我刚才执行了4init1.jsp1init2.jsp,正好产生了50000TestBean对象,和图示显示的一样。

3. 过一会后,按F4键进行垃圾回收。但回收完成后,这些对象依然存在,说明某些地方对这个类的引用没有被释放!

4. 找出是哪些地方使用了TestBean类,并且没有释放它们

cn.test.TestBean对象上点击右键选择“Take Heap Snapshot for Selection”,观察它的heap

下一步:

点击“OK”:

 

在该类中点击右键,在出现的菜单中选择“Use Selected Objects”:

出现如下窗口:

选择”Allocations”,点击“OK,然后我们要的结果就出来了

图中显示调用此类的地方是init1.jspinit2.jsp,并且各自占用的比率都列出来了。

既然问题的所在找出来了,接下来就该去解决问题了!

(五)总结

其实,我们在测试内存占用时还可以另外写一个释放内存的JSP文件来配合测试,会更清楚一些:

Free.sjp

<%@pagelanguage="java"import="java.util.*,cn.test.*"pageEncoding="ISO-8859-1"%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

 <head>

   <title>init</title>

 </head> 

 <body>  

   <%TestMain.list.clear();%> collection OK!

 </body>

</html>

在点击完init1.jspinit2.jsp后,可以看到内存是TestBean对象的数量增加了,然后执行free.sjp,接着再执行F4进行垃圾回收,立刻可以看到TestBean对象被释放掉了。


TAG:

 

评分:0

我来说两句

Open Toolbar