`

性能分析工具

 
阅读更多

jmap是JDK自带的一个工具,非常小巧方便,其支持参数如下:

 -heap      
打印heap空间的概要,这里可以粗略的检验heap空间的使用情况。

jmap -heap PID 


fs@inspur92:~/test/llxdata/081005/tmp$ jmap -heap 30774
Attaching to process ID 30774, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.1-b02

using thread-local object allocation.
Parallel GC with 8 thread(s)

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 1073741824 (1024.0MB)
   NewSize          = 1310720 (1.25MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 268435456 (256.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 353107968 (336.75MB)
   used     = 9083624 (8.662818908691406MB)
   free     = 344024344 (328.0871810913086MB)
   2.572477775409475% used
From Space:
   capacity = 2359296 (2.25MB)
   used     = 0 (0.0MB)
   free     = 2359296 (2.25MB)
   0.0% used
To Space:
   capacity = 2359296 (2.25MB)
   used     = 0 (0.0MB)
   free     = 2359296 (2.25MB)
   0.0% used
PS Old Generation
   capacity = 715849728 (682.6875MB)
   used     = 47522208 (45.320709228515625MB)
   free     = 668327520 (637.3667907714844MB)
   6.638573172720407% used
PS Perm Generation
   capacity = 40435712 (38.5625MB)
   used     = 40067528 (38.21137237548828MB)
   free     = 368184 (0.35112762451171875MB)
   99.08945834810575% used

以上的输出很简单,第四行起开始输出此进程我们的JAVA使用的环境
Heap Configuration,指在我们启动时设置的一些JVM参数。像最大使用内存大小,年老代,年青代,持久代大小等。

Heap Usage,heap的实际使用情况。包括新生代、老生代和持久代。

有这个可以很简单的查看本进程的内存使用情况。也许进程占用的总内存比较多,但我们在这里可以看到真正用到的并没有多少,很多都是"Free"。内存使用的堆积大多在老年代,内存池露始于此,所以要格外关心“Old Generation”。



-histo PID
这里会生成一个类的统计报表,此表非常简单,如显示什么类有多少个实例,共占了多少字节等。如下:

fs@inspur92:~/test/llxdata/081005/tmp$ jmap -histo 30774

 num     #instances         #bytes  class name
----------------------------------------------
   1:         12077       37306240     [I
   2:          8404        8913528       [B
   3:         55627        8311744      <constMethodKlass>
   4:         55627        7576152      <methodKlass>
   5:         35982        6771360     [C
   6:          4838        5536240     <constantPoolKlass>
   7:         88849        4696992    <symbolKlass>
   8:          4838        3735856    <instanceKlassKlass>
   9:          4024        3334976    <constantPoolCacheKlass>
  10:          4600        2201648    <methodDataKlass>
  11:         35011        1120352    java.lang.String
  12:          5286         549744    java.lang.Class
  13:          6509         441272    [S
  14:          7454         392128    [[I

其中关于I、B、C等的说明如下 Table 4.2.

BaseType Character Type Interpretation
B byte signed byte
C char Unicode character
D double double-precision floating-point value
F float single-precision floating-point value
I int integer
J long long integer
L<classname>; reference an instance of class de><classname>de>
S short signed short
Z boolean de>truede> or de>falsede>
[ reference one array dimension

 



-permstat 
打印一些持久代上的内存使用状态,有“活”的,有“死”的。

class_loader    classes bytes   parent_loader   alive?  type
<bootstrap>     2099    12780072          null          live    <internal>
0x00000000c069dc58      1       1968    0x00000000c017e968      dead    sun/reflect/DelegatingClassLoader@0x00000000b00685b0
0x00000000c05c37d8      1       2008    0x00000000c017e968      dead    sun/reflect/DelegatingClassLoader@0x00000000b00685b0
0x00000000c069d900      1       1968    0x00000000c017e968      dead    sun/reflect/DelegatingClassLoader@0x00000000b00685b0

不常用。


-heap:format=b     

产生一个HeapDump文件,此为生成heapdump文件的重要参数。
例:jmap -heap:format=b 2657
会产生一个heap.bin的heapdump文件。
需要注意的是,此生成heapdump的参数为JDK1.5,在1.6中的格式为:
jmap -dump:live,format=b,file=xxx 2657
这里更加强大一些,可以指定是存活的对象,还有生成heapdump的文件名。

当被测应用使用内容较大时(4G以上),dump需要花费较长时间,很可能导致dump失败。

dump下来的文件结合jhat进行分析会更方便。


 jhat

jhat是一个Java堆复制浏览器。这个工具分析Java堆复制文件(例如,由上面的"jmap -dump"所产生的)。Jhat启动一个允许堆中的对象在web浏览器中进行分析的web服务器。这个工具并不是想用于应用系统中而是用于"离线"分 析。"jhat工具是平台独立的",其意思是,它可以被用来观察在任何平台上所产生的堆复制。例如,我们有可能在Linux系统上使用jhat来观察一个 在Solaris OS上所产生的堆复制。

把本机的java内存映像导出到heap.dmp中,其中PID为java进程的ID号。
jmap -dump:live,format=b,file=heap.dmp PID

导出后的映像文件可以用jhat来进行分析,-J是向java虚拟机传一个参数,如-mx768m是指定虚拟机可用最大的内存为768M。如果映像文件很大,你要指定一个很大的值,否则在分析过程中就会有OutOfMemeryError的错误。
jhat -J-mx768m -port <端口号:默认为7000> heap.dmp

 

 

java CPU占用分析

http://www.oschina.net/question/54100_59399

 

 

 

 

 

监控进程CPU top –p pid
简单处理甚至可以查看进程处理的URL请求
监控进程的IO iotop –p pid
监控进程的物理内存使用 ps, /proc

 

 

 

分享到:
评论

相关推荐

    OpenCL 性能分析工具(Profiler)

    XCLProfiler以及XCLTools 是通用OpenCL性能分析工具。 用于快速分析OpenCL Kernel以及DMA的性能。 提供文本方式的输出便于使用工具软件或者脚本进行日志分析。不同于大多数厂家的定制工具,XCLProfiler支持所有标准...

    web前端性能分析工具导引

    正如标题"Web前端性能分析工具导引"所暗示的,关注这一领域的核心在于优化用户对页面加载速度和响应时间的感知。根据Yahoo的高性能网页最佳实践,前端性能优化能够显著提升网站的性能,减少用户流失,提高销售转化率...

    一个轻量级的springboot项目性能分析工具源码+数据库,通过方法调用链路追踪以及运行时长监控快速定位性能瓶颈,可视化展示

    一个轻量级的springboot项目性能分析工具,通过方法调用链路追踪以及运行时长监控快速定位性能瓶颈,并进行可视化展示,还支持代码热更新与邮件预警 实时监听方法,统计运行时长 web展示方法调用链路,瓶颈可视化...

    sql性能分析工具效率分析

    本文将详细探讨"SQL性能分析工具效率分析"这一主题,旨在帮助你理解和利用这些工具来优化你的项目和SQL功能。 首先,SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言,其性能直接影响到...

    Linux常见性能分析工具

    Linux系统中有很多性能分析工具可以帮助系统管理员或工程师监控系统状态并诊断性能问题。本篇文章将详细介绍Linux下一些常见的性能分析工具及其应用场景。 首先,vmstat(virtual memory statistics)是一个非常...

    性能分析工具.rar

    IBM作为全球知名的技术公司,提供了多种强大的性能分析工具,帮助开发者和运维人员深入理解应用程序的运行状况,找出瓶颈并进行调优。以下是针对“性能分析工具.rar”中提到的三个工具的详细介绍: 1. **gc-...

    JAVA编码习惯和几款JAVA性能分析工具

    在软件开发中,尤其是使用Java语言时,遵循良好的编码...在选择性能分析工具时,需要考虑项目需求、团队熟悉度以及工具的特性和性能。正确使用这些工具,结合良好的编码习惯,能够显著提升Java应用程序的性能和稳定性。

    使用IBM性能分析工具HeapAnalyzer解决生产环境中的性能问题

    使用 IBM 性能分析工具 HeapAnalyzer 解决生产环境中的性能问题 性能分析是企业级应用系统软件不可或缺的一部分,对于业务操作的响应时间和并发数的要求非常高。只有经过不断的调整优化,才能达到资源的最大利用率...

    koTime是一个轻量级的springboot项目性能分析工具,通过方法调用链路追踪以及运行时长监控快速定位性能瓶颈

    koTime是一个轻量级的springboot项目性能分析工具,通过方法调用链路追踪以及运行时长监控快速定位性能瓶颈,并进行可视化展示,还支持代码热更新与邮件预警; 实时监听方法,统计运行时长; web展示方法调用链路,...

    Windows平台C++性能分析工具LukeStackWalker.zip

    简单易用的Windows平台性能分析工具,与vc6以上的版本自带的性能分析工具功能类似。简单的几个步骤即可分析出C++程序的性能所在,没有Intel的VTune_Amplifier这么专业,但是对于Windows开发来说足够使用。

    sqlserver 性能分析工具大全

    sqlserver 性能分析工具大全,包括uml,MPSreport,SQL Server 2005 Best Practices Analyzer ,SQL Server 2005 Performance Dashboard Reports,SQL Server Web Data Administrator,sqlnexus 2.5.0.7,Relog Tool,...

    c++ 性能分析工具

    1. **定位问题**:在复杂程序中,性能问题可能隐藏在深层代码中,性能分析工具可以帮助我们找到这些难以察觉的问题。 2. **资源利用**:通过分析,我们可以了解CPU、内存等资源的使用情况,避免不必要的资源浪费。 3...

    android性能分析工具

    Android提供了多种性能分析工具,其中`OProfile`是一款强大的系统级性能分析器,适用于Linux系统,包括Android。本文将深入探讨`OProfile`及其在Android上的应用。 `OProfile`是一款开源的、跨平台的性能分析工具,...

    koTime是一个springboot项目性能分析工具

    koTime是一个springboot项目性能分析工具,通过追踪方法调用链路以及运行时长快速定位性能瓶颈,并进行可视化展示,还支持代码热更新与邮件预警! a springboot tool for tracing call graph,which can help you find...

    如何在C++中实现代码性能分析工具集

    为了实现代码性能分析工具的集成,开发者可以使用多种工具和技术。以下是一些常用的性能分析工具和集成方法的详细介绍。 集成代码性能分析工具到C/C++项目中,可以帮助开发者及时发现并解决性能问题。通过选择合适的...

    PAL 日志性能分析工具

    **PAL日志性能分析工具详解** “PAL日志性能分析工具”是一款专为IT专业人士设计的强大工具,主要用于解析和分析PerfMon(Performance Monitor)计数器日志。这款工具能够帮助用户深入理解系统性能瓶颈,及时发现并...

    VR显卡性能分析工具

    FCAT VR是NVIDIA推出的一款专门为VR虚拟现实性能分析设计的工具。它是一个免费的开发工具,开发者可以通过它来分析和优化VR游戏或者应用的性能表现。FCAT VR工具套件主要包括两个部分:FCAT VRCapture 和 FCAT VR ...

    深入探索Java Flight Recorder:Java性能分析工具

    Java Flight Recorder是一个强大的性能分析工具,可以帮助开发者深入理解Java应用程序的行为。通过本文的介绍,读者应该能够了解JFR的主要功能、使用方法以及如何与JMC结合进行有效的性能分析。 Java Flight ...

Global site tag (gtag.js) - Google Analytics