• JProfiler入门


        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~1JPROFI~1inwindowsjprofilerti.dll=port=8849
        Linux环境jvm启动参数示例:(目录为JProfiler的安装目录)
            -agentpath:/opt/jprofiler7/bin/linux-x86/libjprofilerti.so=port=8849
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
  • 相关阅读:
    解决KDE桌面附带文件索引框架Baloo占用资源过多问题
    [Journey with golang] 7. Traps
    [Journey with golang] 6. Reflection
    Codeforces Round #614 (Div. 2)
    [Journey with golang] 5. Concurrent
    2018-2019 9th BSUIR Open Programming Championship
    2019-2020 ACM-ICPC Pacific Northwest Regional Contest
    UFPE Starters Final Try-Outs 2020
    2019 ICPC Asia Taipei Hsinchu Regional Contest
    [Journey with golang] 4. Interface
  • 原文地址:https://www.cnblogs.com/mosquito-woo/p/4413963.html
Copyright © 2020-2023  润新知