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
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

 

posted on 2015-04-10 10:59  mosquito_real  阅读(686)  评论(0编辑  收藏  举报