标签:
JProfiler是一个商业授权的java剖析工具,主要针对javaee和javase应用程序开发。
它把CPU、执行绪和内存的剖析组合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合用途。
JProfiler的是一个独立的应用程序,但其提供Eclipse和IntelliJ等IDE的插件。
它允许两个内存剖面评估内存使用情况和动态分配泄漏和CPU剖析,以评估线程冲突。
JProfiler直觉式的GUI让你可以找到性能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。
它让你得以对heap walker作资源回收器的root analysis,可以轻易找出内存漏失;heap快照(snapshot)模式让未被参照(reference)的对象、稍微被参照的对象、或在终结(finalization)队列的对象都会被移除;整合精灵以便剖析浏览器的Java外挂功能。
JProfiler可以监视本地和远程的jvm,适合各种操作系统。
常用的功能有:
1.监视对内存占用情况和创建对象实例的数量找出内存泄露。
2.监视占用cpu较多的方法。
3.监视线程的阻塞和死锁。
4.监视gc的耗时。
监视本地jvm需要安装JProfiler的win版本;监视远程的jvm需要在本地安装JProfiler的win版本,在服务端安装JProfiler的Linux版本。
将JProfiler集成到Eclipse IDE:
1、在JProfiler的主菜单中选择Session->IDE integrations。需要注意的是,当执行插件安装时,需要关闭Eclipse。如果通过JProfiler的安装向导执行安装程序,启动Eclipse前需要完成整个安装。
2、选择Eclipse的版本。
3、点击“Integrate”,选择Eclipse所在的文件夹。点击确定。
4、启动eclipse。
5、在Eclipse里配置JProfiler。点击主菜单,->Windows->Customize Perspective->Commands,找到Profile,选中它,再点击OK即可。
6、运行测试,选择你要测试的系统的主类。右击Profile as -> Java Application 运行即可。
<1.监视堆内存的增长情况:
选择左边的Telemetries菜单可以查看堆内存情况。
绿色的为空闲的空间,蓝色为已用空间(这里特指堆内存空间)。
在这里还可以查看堆内存各个区域的空间大小:
par Eden Space
CMS Old Gen
Par Survivor Space
-xmx jvm最大可用内存
-xms jvm促使内存,可以与xmx相同
-xmn 年轻代
<2.查看内存中对象的实例数量:
选择Live memory可以查看内存中对象的实例数量,查看内存中对象的数量,找出不能被回收的对象。
通过长时间的观察可以找出没有被释放的对象。
但是不一定数量最多的实例就是泄露,要根据业务情况具体分析。
在这里面可以通过包名过滤,只显示你开发的类,这个功能十分有用。
右键点击所要查看的类,选择Add Selection To Class Tracker选项可以查看实例数量增长趋势图。
<3.查看实例被谁引用:
选择Heap Walker,并点击相机图标开始。
鼠标右键点击选择Use Selected Instances。
服务端JProfiler代理工具(Agent)加载原理:
JProfiler的服务端分析代理工具,必须在jvm启动的阶段通过jvm参数来加载。
jdk1.4以前使用jvmpi,1.5以后使用jvmti。
参数如下:
1.4 --> -Xrunjprofiler
1.5 --> -agentlib:jprofilerti
这些参数告诉jvm,加载分析代理工具,后面的字符串取决于你使用的JProfiler库文件的文件名:
windows --> jprofilerti.dll
Linux/Unix --> libjprofilerti.so
通过加(冒号-jvmpi)和(等号-jvmti)可以将参数传递给分析代理。
windows环境jvm启动参数示例:(目录为JProfiler的安装目录)
-agentpath:C:\PROGRA~1\JPROFI~1\bin\windows\jprofilerti.dll=port=8849
Linux环境jvm启动参数示例:(目录为JProfiler的安装目录)
-agentpath:/opt/jprofiler7/bin/linux-x86/libjprofilerti.so=port=8849
标签:
原文地址:http://www.cnblogs.com/mosquito-woo/p/4413963.html