JProfiler是一款电脑JVM监控工具,该软件能对JAVA进行多样全面的分析,界面直观使用简单,能查找多个不同内容进行剖析,专业高效,让你轻松管控。
软件介绍
JProfiler(java分析软件)官方版是款功能十分全面、简单易操作的Java剖析工具(profiler),JProfiler(java分析软件)官方版页面简洁美观、极易上手。JProfiler(java分析软件)最新版专用于分析J2SE和J2EE应用程序。JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。
JProfiler 是一个全功能的Java剖析工具(profiler),专用于分析J2SE和J2EE应用程序。JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。
软件特色
本地会话实时分析模式
用户一旦定义好了其应用程序启动方式,JProfiler即能对之进行设置,用户即刻便能从设置好的JVM中看到实时数据。用户若不想进行会话配置,其可以从多个IDE插件中选择其最喜欢的那个对应用程序进行配置。
远程会话实时分析模式
通过修改Java开始命令行方式的VM参数,用户可使任意Java应用程序监听来自的JProfiler GUI的连接。该设置程序不但可以在本地计算机上运行,还可以在网络中作为某个设置程序的附加程序使用。此外,JProfiler还提供了相当多的集成向导,可用于主流的可以帮助用户安装和设置其应用程序的应用程序服务器。
离线分析模式
用户无需通过JProfiler GUI连接应用程序即可对之进行设置。在离线设置模式下,用户可以使用功能强大的JProfiler触发系统或者JProfiler' API对设置代理进行控制,然后将快照保存入磁盘。稍后用户便可使用命令行导出工具或者蚂蚁任务导出工具,在JProfiler GUI或编程方式的设置导出视图中打开这些快照。
快照比较
在JProfiler中,用户可以将当前的所有设置数据保存为一个快照存入磁盘中。JProfiler提供了丰富的比较功能以对比两个或者多个快照之间的不同。用户可从编程的命令行比较工具和ant task比较工具中选择其一创建对比报告。
查看HPROF快照
JProfiler能打开用JVM工具(比如jconsole、 jmap或通过-XX:+HeapDumpOnOutOfMemoryError JVM参数触发)创建的HPROF快照文件
软件功能
1.内存剖析 Memory profiler
JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
所有对象
显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。
记录对象 Record objects
显示类或所有已记录对象的包。你可以标记出当前值并且显示差异值。
分配访问树 Allocation call tree
显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。
分配热点 Allocation hot spots
显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。
2.堆遍历 Heap walker
在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:
为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。
显示一个对已记录对象的解决时间的柱状图。
3. CPU 剖析 CPU profiler
JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:
显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。
显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。
软件亮点
卓越的易用性
Profiler简单而强大,同时它的配置会话是直接的,第三方集成使得开始轻松,分析数据以自然的方式呈现。在各个层次上,JProfiler经过精心设计,可以帮助您开始解决问题。
JDBC、JPA和NOSQL的数据库分析
JProfiler的JDBC和JPA/Hibernate探测器以及MongoDB,Cassandra和HBase的NoSQL探测器显示了数据库访问缓慢以及代码缓慢的语句调用原因。从JDBC时间线视图显示所有与其活动的JDBC连接,通过热点视图,显示各种遥测视图的慢速语句和单个事件列表,数据库探针是深入了解数据库层的重要工具。
极好的支持JAVA企业版
在JProfiler中的大多数视图中存在JEE的专用支持。例如,在JEE聚合级别中,您可以根据应用程序中的JEE组件看到调用树。另外,每个请求URI都会分配调用树。此外,JProfiler在低级别分析数据之上添加了语义层,如在CPU分析视图中呈现的JDBC,JPA/Hibernate,JMS和JNDI调用。凭借其JEE支持,JProfiler弥合了代码分析器和高级JEE监视工具之间的差距。
更高级别的分析数据
JProfiler有许多探针可以显示JRE中有趣子系统的更高级别的数据。除了JavaEE子系统,如JDBC,JPA/Hibernate,JSP/Servlets,JMS,Web服务和JNDI之外,JProfiler还提供了有关RMI调用,文件,套接字和进程的高级信息。这些探针中的每一个都有自己的一组有用的视图。所有这些视图也可用于您可以在JProfiler中即时配置的自定义探针。
内存泄漏分析
JProfiler的堆步行器为您提供了一个直观的界面来解决简单和复杂的内存问题。5个不同的视图和大量的检查显示当前对象集的不同方面。每个视图都提供对所选对象的基本见解,并允许您切换到不同的对象集。
广泛的质量保证能力
快照的丰富功能可以轻松跟踪进度。JProfiler对命令行操作有很强的支持。这包括配置,导出快照数据和从命令行创建快照比较的功能。与JProfiler绑定的ant任务允许您从构建脚本执行所有命令行操作。
最广泛的支持平台,IDE和应用服务器
集成到所有流行的IDE中,使开发过程中的分析与运行应用程序一样简单。并且市场上几乎所有应用服务器的大量集成向导确保您可以开始点击几次,而不是阅读文档。
低开销
JProfiler只在需要时记录数据。实际上,您可以使用JProfiler代理启动应用程序,并在以后连接JProfilerGUI。当您不记录任何数据时,开销非常小。JProfiler显示您的性能分析设置如何影响性能,并为您提供模板以快速选择常见用例的性能分析设置。
强大的CPU分析器
修复性能瓶颈是分析器最常用的用例。使用JProfiler,当您尝试找到问题的原因时,您将具有决定性的优势。调用树视图过滤器,聚合级别和线程状态选择器只是JProfiler在此领域的多功能性的一些示例。
集成螺纹轮廓仪
使用JProfiler可以解决一系列不透明的问题,例如在使用过多锁定的多线程应用程序中增加活动性。线程分析不仅在JProfiler中有一个单独的视图部分,它也被紧密地集成到CPU分析视图中。
使用教程
JProfiler的使用比较难,尤其是没有中文化语言的话,入门起来比较困难,所以小编这里带来基础教程,首先学会最简单的使用方法,才能逐渐精进,那么请看下面的教程吧:
1. 点击jprofiler.exe
2. 执行菜单SessionàIntegration WizardsàNew ServerIntegration
选择是本地测试还是远程测试:
选择tomcat运行的脚本文件:
选择虚拟机的类型:
选择监控端口:
用默认的即可
选择Web容器是否和Jprofiler一起运行:
默认即可
配置提示:
在“远程控制”的时侯要仔细阅读一下。
然后选择立即起动,开始运行。
点击“OK”,我们可以看到另外一个小窗口出来了:
Jprofiler的窗口为:
这样我们就可以进行监控了!
怎么看内存问题
JProfiler对于内存溢出的监控功能非常实用,可以很好的对内存问题进行分析预警,用户能更加放心的使用,那么怎么才能对JProfiler进行设置来查看内存问题呢?下面的教程能让你轻松学会。
1. 初始化检验环境:
切换到“Live Memory-->All Objects”标签,可以看到当前tomcat中的对象情况,注意jprofiler其他版本可能位置不一样.
在执行操作前,需要先F4,运行“Run GC”,使jvm进行内存回收清理无效的对象.为了便于比较内存的增长情况,可以点击右键--->"Mark Current",
来将当前内存使用情况作为参照;点击后会显示“Difference”列,该列会列出对象数量的变化和变化比率
2.打开内存记录:
点击“Start Recordings”按钮,开始记录。执行这步的主要目的是为下面“Heap Walker”设置一个监控区间;如果不记录的话“Heap Walker”将分析jvm虚拟机的所有内存,即耗时又不能准确的发现内存泄漏的原因。
3. 执行操作,执行gc;
使用压力工具访问被测应用,执行完之后再次F4进行GC----这样是为了消除可以回收的对象。执行内存回收后,仍然存在于内存中的对象有可能是泄漏的对象。如下图instance count中红色的部门为不能回收的对象,difference列列出了增加的对象数量和增。以String为例,在该操作中增加了31751个对象增幅达到了14%,随后会在HeapWalker中观察这些对象,分析哪些对象是泄漏的。一般引起泄漏的对象包括:String、char[]、HashMap、Concurrenthashmap等,这类对象需要重点关注下;
4. 关闭内存记录:
点击“Stop Recordings”关闭内存记录,告诉jProfiler把这段记录作为分析对象;
5. 找到增加迅速的对象类型,打开HeapWalker:
在视图中找到增长快速的对象类型,本例Concurrenthashmap的增长速度很快。在memory视图中找到Concurrenthashmap---点右键----选择“Show Selectiion In Heap Walker”,切换到HeapWarker 视图;切换前会弹出选项页面,注意一定要选择“Select recorded objects”,这样Heap Walker会在刚刚的那段记录中进行分析;否则,会分析tomcat的所有内存对象,这样既耗时又不准确;
6. 在HeapWalker中,找到泄漏的对象;
HeapWarker 会分析内存中的所有对象,包括对象的引用、创建、大小和数量;
HeapWarker视图下方可以进行页面切换:
通过切换到References页签,可以看到这个类的具体对象实例。
为了在这些内存对象中,找到泄漏的对象(应该被回收),可以在该对象上点击右键,选择“Use Selected Instances”缩小对象范围;
单击OK按钮
7. 通过引用分析该对象:
在References引用页签中,可以看到该对象的的引用关系,可以切换incoming/outcoming,显示引用的类型:
incoming 表示显示这个对象被谁引用;
outcoming 表示显示这个对象引用的其他对象;
选择“Show In Graph”将引用关系使用图形方式展现;
选中该对象,点击“Show Paths To GC Root”,会找到引用的根节点;
在上图中,我们可以发现,这个HashMap Segment对象最终的引用是在ConcurrentHashMap和ReentranLock对象中;
8. 通过创建分析该对象:
如果第7步还不能定位内存泄露的地方,我们可以尝试使用Allocations页签,该页签显示对象是如何创建出来的;
我们可以从创建方法开始检查,检查所有用到该对象的地方,直到找到泄漏位置;
怎么连远程服务
连接远程服务能更好的查看和监控远端服务器,JProfiler想要连接远程服务需要经过一些操作,需要进行连接的用户,可以查看下面的使用方法学会:
服务端
1.找到本地Tomcat的bin目录下刚才连接本地tomcat生成的两个JproFiler文件:
startup_jprofiler.bat ; startup_jprofiler.sh
把startup_jprofiler.sh文件移动到远程服务器端的Tomca的bin目录下
2.载远程服务端的linux命令窗口进入tomca/bin目录下,然后运行startup_jprofiler.sh文件。(在之前记得service ipatbles stop来停止防火墙)
3.如果出现下图代码行就说明远程启动Jprofiler成功
客户端
1.新建一个session
2.选择远程tomcat版本
3.选择远程服务器,系统选择linux
4.选择远程端的JDk版本号
5.选择next,再出现的页面填写远程服务器的IP:
6.选择远程服务器jprofiler的安装路径:
7.选择本地Tomcat的startup.sh的执行路径:
8.然后点击选择默认端口,Yes马上启动
9.出现正在连接...
10.选择Ok
11.然后远程连接成功:
注意:如果远程服务器连接失败,请重启服务器,再次连接,就OK!
更新内容
一、使用脚本探针,您可以直接在JProfiler UI中定义有效载荷探测器。它们取代了旧的自定义探头,并且配置起来更容易。对于每个方法拦截,您可以配置一个脚本,将拦截的有效负载作为字符串返回。
调用树的上下文菜单包含一个操作,可以很容易地为脚本探测器选择截取的方法。
每个脚本探针在“JEE&probes”部分添加一个新视图,其中包含有效负载热点,默认遥测和探测事件视图。
一个摇篮插件已被添加。Gradle插件是从Gradle插件门户加载的,但不包括JProfiler发行版。要使用任何JProfiler Gradle任务,请使用开始构建脚本
插件{ id'com.jprofiler'version'XYZ'}jprofiler { installDir = file('/ path / to / jprofiler / home')}
使用分析任务和包含触发器的预配置会话,您可以在构建过程中自动执行分析会话:
任务运行(键入:com.jprofiler.gradle.JavaProfile){ main ='com.mycorp.MyMainClass' classpath sourceSets.main.runtimeClasspath offline = true sessionId = 80 configFile = file('config / config.xml')}
还有命令行导出和命令行比较的任务,以及使用堆转储预先分析快照。
二、堆栈中 的合并参考视图已被重新实现,现在更加可用和有用。视图现在显示每个节点上的引用持有者和引用对象,并使引用关系更清晰。
另外,引用可以按类而不是按字段进行分组。这是合并参考视图的新默认模式。JProfiler中的紧凑型引用类型不直接支持的许多非标准集合类型会以这种方式自动折叠。
在合并的传入参考视图中的每个节点上,可以选择当前对象集中以此方式引用的对象或特定节点的引用持有者。
三、一个合并的主导引用视图已经被添加到堆沃克。与合并的传入引用不同,合并的控制引用显示必须消除哪些引用才能使当前对象集中的部分或全部对象符合垃圾回收的条件。
在多个独立GC根的情况下,当前对象集中的部分或全部对象可能无法通过支配引用来引用,因此视图可能为空。合并的支配引用使用与最大对象视图相同的数据,因此引用可以是传递的,而不需要父节点和子节点之间的直接引用。
合并的支配参考视图可以显示当前对象组对GC根的引用,反之亦然。根据您要消除的引用是关闭当前对象集中的对象还是靠近GC根,一个或另一个模式更方便。
在堆栈中,最大对象视图中的类和类加载器分组已添加。如果您拥有同一班级的许多最大对象,切换到班级分组以获得更好的照片非常有用。
如果类加载器是您调查的重要方面,那么类加载器分组将帮助您找出最大对象的类来自何处。
四、在MongoDB的异步驱动器现在支持。在MongoDB探测中,代码的异步执行与触发数据库操作的堆栈跟踪绑定在一起。是否使用同步或异步驱动程序由热点以下的第一个节点或事件视图中堆栈跟踪的第一个节点指示。
五、一个探测器遥测概览已添加,结合了探头的所有遥测数据。就像标准VM遥测概述一样,您可以点击遥测名称来显示完整视图。
六、节点详细信息对话框中的快速搜索已实施。节点详细信息对话框是探测负载字符串可能非常长的重要工具,例如JDBC视图中的SQL语句。将鼠标移动到文本区域上时,快速搜索和将所有文本复制到剪贴板的操作变得可见。
七、JProfiler 9已经支持Java 9的分析,但JProfiler UI和所有命令行工具现在可以在Java 9上运行。这对于JProfiler UI现在可以使用Java 9中的新HiDPI支持的Linux桌面尤其重要。
JProfiler大量使用直接在JProfiler中输入的脚本。现在您可以选择Java 9 + JRE来编译这些脚本。
另外,从该版本开始,可以使用 JProfiler支持的所有功能对Java 10进行概要分析。
精品推荐
-
Microsoft .Net Framework4.7.2中文版
详情 -
.Net3.5
详情 -
.Net3.5 64位win10离线安装包
详情 -
MarkdownPad2
详情 -
.Net Framework 4.0 32位离线安装包
详情 -
RPGVXACE RTP
详情 -
Cmder(windows命令行工具)
详情 -
jetbrains全系列激活工具
详情 -
scratch免激活离线版
详情 -
Microsoft .NET Runtime6.0
详情 -
鲸鱼积木编程专业版
详情 -
Lodop云打印机插件
详情 -
Qt Linguist(QT语言家)
详情 -
Microsoft .Net Framework 4.0完整版
详情 -
Jar to Exe
详情 -
DevExpress 2020
详情
装机必备软件
网友评论