---
title: Java性能分析工具简介
description: "Java性能分析工具是针对基于鲲鹏的服务器上运行的Java程序的性能分析和优化工具，能图形化显示Java程序的堆、线程、锁、垃圾回收等信息，收集热点函数、定位程序瓶颈点，帮助用户采取针对性优化。"
url: https://www.hikunpeng.com/document/detail/zh/nativedevp/twp/Kunpeng_Development_0034.html
sourcePath: /source/zh/nativedevp/twp/Kunpeng_Development_0034.html
indexId: 24fec2f2b6c27b6431b8aba5da868775c9d890292054178a1024d3382298451255
---
# Java性能分析工具简介

Java性能分析工具是针对基于鲲鹏的服务器上运行的Java程序的性能分析和优化工具，能图形化显示Java程序的堆、线程、锁、垃圾回收等信息，收集热点函数、定位程序瓶颈点，帮助用户采取针对性优化。

图1 Java性能分析工具


**表1 任务描述**

| 任务分类 | 描述 |
| --- | --- |
| 在线分析 | 在线分析包含对于目标JVM和Java程序的双重分析。包括Java虚拟机的内部状态如Heap，GC活动，线程状态及上层Java程序的性能分析，如调用链分析，热点函数，锁分析，程序线程状态及对象生成分布等。通过Agent的方式在线获取JVM运行数据，进行精确分析。 主要分析结果包含： 概览 在线显示Java虚拟机系统状态。 在线显示JVM的Heap大小、GC活动、Thread数量、Class加载数量和CPU使用率。 线程信息 获取当前JVM中实时的活动线程状态和当前线程转储，图形化显示线程锁定状态，分析线程死锁情况。 内存信息 通过抓取堆快照，分析应用在某时刻堆的直方图分布和支配调用关系，追溯堆内存中各Java存活对象到GC root的引用关系链，帮助定位潜在的内存问题；对比分析不同时刻的堆快照，给出堆使用与分配变化，辅助用户发现堆内存在分配和使用过程中的异常情况。 获取Java堆中各个对象创建的数量及大小，显示相关内存使用情况并实时刷新。 热点信息 通过工具分析的热点方法，热点方法以倒火焰图形式呈现，不同层（如Java调用层、JNI层、Native层、内核层等）的热点方法以不同颜色区分。 通过工具展开查看Java方法对应的字节码（非必须）、经JVM JIT编译器生成的机器指令，并查看这些指令的热点分布；对于不能查看的字节码的情形需要给出原因。 对给定的入口方法进行调用链采集，收集采集期间的方法调用关系，方法耗时等数据；以树形式展现。 GC信息 用户可以在线统计分析目标JVM进程中发生的GC事件，分析GC原因、GC阶段分布、GC内存回收效果、GC暂停等因素，以定位潜在的GC相关的内存问题、性能瓶颈问题。 IO信息 在线分析应用中的文件IO、Socket IO时延、消耗带宽等数据，找出热点IO操作。 数据库信息 监测和分析数据库连接池。监测数据库连接池连接的情况、帮助用户定位潜在的连接泄漏，对不合适的连接池配置给出优化建议。 分析JDBC热点SQL操作。记录应用中的SQL调用时间、耗时和堆栈跟踪，帮助用户定位耗时最长的热点SQL操作。 分析NoSQL热点操作。记录应用中访问/操作NoSQL数据库调用时间、耗时和堆栈跟踪，帮助用户定位耗时最长的热点NoSQL操作。 HTTP信息 记录应用中的HTTP请求时间和耗时，找出热点HTTP请求。 快照信息 支持在堆、IO、Workload在线分析过程中生成快照，对快照进行比对，辅助用户发现资源、业务相关指标的变化趋势，定位潜在的资源泄漏问题或性能指标恶化问题。 |
| 采样分析 | 通过采样的方式，收集JVM的内部活动/性能事件，通过录制及回放的方式来进行离线分析。这种方式对系统的额外开销很小，对业务影响不大，适用于大型的Java程序。 主要分析结果包括： 概览 显示Java虚拟机系统状态。 通过采样及回放的方式显示JVM的Heap使用情况、GC活动、IO消耗和CPU使用率。 线程转储及锁分析结果 分析程序线程状态及锁。获取采样时间内的线程的状态变化和当前线程转储，根据线程转储图形化地显示线程锁定状态，分析线程死锁情况。 分析估计线程阻塞对象和阻塞时间。 方法采样分析结果 分析Java及native代码中热点函数CPU Cycles的占比及定位。 支持通过火焰图查看热点函数及其调用栈。 内存分析结果 Java对象在Heap中的分配情况，快速定位消耗Heap最多或数量分配最多的对象，发现潜在问题；通过堆栈追踪定位潜在的内存问题。 通过对存留周期长的Java对象进行采样分析，发现潜在的堆内存泄漏点，定位潜在堆内存泄漏问题。 GC分析结果 用户查看Java的GC配置，Heap大小变化以及GC事件发生情况。通过观察Heap变化，GC活动频率和暂停时间，分析和调整当前的GC策略。 IO分析结果 用户可分析目标Java应用中关于文件读写、Socket流量使用情况，以发现IO使用瓶颈；分析应用对文件的读写统计信息：读写路径、读/写频次、读/写速率、读/写总量、堆栈跟踪（可配）及随时间变化图。 |
