Java SE/EE 剖析工具 JProfiler 7 发布了:探针、线程和堆检查

  • Bienvenido David
  • 王丽娟

2011 年 8 月 28 日

话题:JavaDevOps语言 & 开发

ej-technologies 有限责任公司前段时间发布了JProfiler 7.0。JProfiler 是一款 Java SE/EE 剖析工具,特色功能有 CPU 分析、内存分析、线程分析和 VM 遥测。7.0 版本的新功能有:

  • 分析 JDBC、JMS、JNDI、Servlet、文件、Socket 和进程的内置探针。
  • 使用 API 自定义探针,也可以在 JProfiler GUI 里直接进行配置。
  • 调用树视图里分析执行者、AWT、SWT 和线程启动的请求跟踪。
  • 堆遍历器里的检查视图。
  • 堆遍历器里,引用其他对象的引用视图能显示原始值和脚本过滤器。
  • 在堆遍历器的几个视图里都可以调用对象的 toString() 方法来显示值。
  • 重新设计了遍历器的引用视图和图表视图。
  • 调用树视图里可以查看历史信息。
  • 在调用树里分析长时间运行的 AWT 事件。
  • JProfiler 可以直接输入脚本来执行“运行脚本”触发器的动作。
  • 线程历史视图中会显示线程组的名称。
  • 监视器历史视图里显示全部的行和列过滤器。
  • 在连接模式下,线程的创建现在会被记录下来。
  • JProfiler 现在可以以独立应用的方式集成到 NetBeans 里,以支持 32 位和 64 位混合安装的情况。
  • WebSphere 8 的集成向导。

JProfiler 现在内置了用于分析 JDBC、JMS、JNDI、Servlet、文件、Socket 和进程的探针,可以记录和分析各子系统的数据。对长时间存活的对象来说,探针有一个时间轴视图。比如说,时间轴里显示的数据库连接能体现这些连接何时处于空闲状态、何时返回一条语句,或者执行批处理事务的时间段。探针还有一个事件视图,同时显示事件、线程和堆栈跟踪信息。举例来说,JDBC 探针会显示连接数据库或执行查询的事件。探针还有一个展示详细信息和统计信息的对象视图、显示方法调用开销最为昂贵的热点视图,还有一个遥测视图,可以用图形的方式展示探针发布的遥测信息。这些内置的探针都可以在 JProfiler 的会话设置里进行配置。

JProfiler 还支持自定义探针的创建。它提供了一套 API,可用来开发自定义的探针,并把自定义探针和待分析的应用部署在一起。JProfiler 同时提供了一个自定义探针向导,能让你在 JProfiler GUI 里自定义探针。你可以指定应用里要被拦截的方法,并在 JProfiler 代码编辑器的协助下创建会被调用的“拦截脚本”。你可以直接添加或修改自定义探针,而不需要重启待分析的应用。请注意,这个版本还添加了一个运行脚本触发器,这也是调用特定方法时执行代码的方式,可以替代简单的自定义探针。

JProfiler 同时引入了请求跟踪的概念,这简化了并行应用和多线程应用的分析。请求跟踪会在调用树视图里把不同线程间的调用点和执行点连接起来。比如说,你可以使用此功能去确定完成一个异步任务所花费的时间,或者找出异步任务的起源。执行人、线程启动和 AWT/SWT 事件都可以用请求跟踪功能进行跟踪。

JProfiler 的堆遍历器也进行了一些增强。

  • 在引用其他对象的引用视图和被其他对象引用的引用视图里,你都能看到对象列表,在引用其他对象的引用视图里还会直接显示原始数据。
  • 对象图现在是一个单独的视图,独立于现有的对象集。你可以添加或删除对象,也可以移除没有连接的项。你还可以搜索选中对象之间的路径。 
  • 现在在引用其他对象的引用视图里可以使用过滤器了。你可以把该对象限定为所选引用链的原始值,或者在活动的分析会话期间输入一个过滤器表达式。
  • 在引用视图中,现在可以在活动的分析会话期间调用对象的 toString() 方法求值并进行显示。
  • 新增了检查视图,可以在这个视图里检查现有的对象集。你可以查找重复的字符串、重复的原始包装器、重复数组、稀疏数组、零长度数组、键值有损坏的 Map、弱引用对象、被引用太多的对象、自我引用和使用自定义过滤器表达式的对象。

标准许可证的最低价格是每个开发人员 499 美元。有10 天试用期。如果你有老版本 JProfiler 支持服务的副本,可以免费升级旧的许可证。要是已经没有支持服务了,则需要购买升级。

JProfiler 的开源替代品是Java 的 VisualVM。商业替代品还有YourKitJProbe

要想获取 JProfiler 7.0 的更多细节信息,请访问 JProfiler 的新特性变更记录页面。

查看英文原文:JProfiler 7: Probes, Threads and Heap Inspections

JavaDevOps语言 & 开发