`
ayufox
  • 浏览: 276223 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[Java性能剖析]Sun JDK基本性能剖析工具介绍

    博客分类:
  • JVM
阅读更多

     Sun JDK随版本同时发布了一些性能剖析的工具,这些工具基本上都是基于JVM MangeAPI和Sun JVM Attach API实现,所以其能提供什么样的功能可以参见JVM Manage API 的说明。我们来了解一下:
    一、功能性工具
    1.jps:列出所有的JVM进程的进程ID和进程名字,实现原理可见Sun JVM Attach API
    2.jinfo:打印JVM启动内部信息,譬如启动参数、JVM版本、操作系统信息等,具体可参见JVM Manage API的OperatingSystem和Runtime这两个Bean,本功能基于JVM Manage API实现。最常用的使用格式:

jinfo pid

     jinfo支持连接到远程的JVM上(远程服务需要启动jsadebugd),实际应用意义不大
    3.jstat:一个内存和垃圾回收情况的统计工具,最常用的使用格式是:

jstat -outputOptions vmid [interval[s|ms] [count]]

    jstat支持连接到远程的JVM上(远程服务需要启动jstatd),实际应用意义不大   
    可使用的outputOptions选项包括:

class Statistics on the behavior of the class loader.
compiler Statistics of the behavior of the HotSpot Just-in-Time compiler.
gc Statistics of the behavior of the garbage collected heap.
gccapacity Statistics of the capacities of the generations and their corresponding spaces.
gccause Summary of garbage collection statistics (same as -gcutil), with the cause of the last and current (if applicable) garbage collection events.
gcnew Statistics of the behavior of the new generation.
gcnewcapacity Statistics of the sizes of the new generations and its corresponding spaces.
gcold Statistics of the behavior of the old and permanent generations.
gcoldcapacity Statistics of the sizes of the old generation.
gcpermcapacity Statistics of the sizes of the permanent generation.
gcutil Summary of garbage collection statistics.
printcompilation HotSpot compilation method statistics.

     更详细的说明见:http://java.sun.com/javase/6/docs/technotes/tools/share/jstat.html
     范例:

jstat -gc 23450 250 4 //23450是进程ID,250表示每250豪秒采样一次,4是总执行4次,输出结果如下:
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
1600.0 1600.0 786.5 0.0 13184.0 11964.2 114688.0 3684.3 131072.0 13484.2 8 0.127 0 0.000 0.127
1600.0 1600.0 786.5 0.0 13184.0 11964.2 114688.0 3684.3 131072.0 13484.2 8 0.127 0 0.000 0.127
1600.0 1600.0 786.5 0.0 13184.0 11964.2 114688.0 3684.3 131072.0 13484.2 8 0.127 0 0.000 0.127
1600.0 1600.0 786.5 0.0 13184.0 11964.2 114688.0 3684.3 131072.0 13484.2 8 0.127 0 0.000 0.127

S0C|S1C/ S0U|S1U:两个Suvivor区容量/空闲的容量
EC/EU:Eden 区容量/空闲的容量
OC/OU:Tenured 区容量/空闲的容量
PC/PU:Perm区容量/空闲的容量
YGC/ YGCT:Young Gen回收次数/总回收时间
FGC/FGCT:Full GC次数/总回收时间
GCT:总的垃圾回收时间(YGCT+FGCT)

     4.jstack:打印JVM当前所有的线程、线程栈和锁信息信息,最常用使用格式如下:

jstack –l pid

    范例:

jstack -l 23450
Full thread dump Java HotSpot(TM) Server VM (10.0-b22 mixed mode):

"Attach Listener" daemon prio=10 tid=0x08058400 nid=0x3005 waiting on condition [0x00000000..0x00000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"DestroyJavaVM" prio=10 tid=0x822af400 nid=0x5b9b waiting on condition [0x00000000..0xb7dc2120]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None
……

     jstack支持连接到远程的JVM上(远程服务需要启动jsadebugd),实际应用意义不大
     5.jmap:当前的堆内存信息dump,JDK6中支持dump到一个文件,由其他分析程序对堆内存进行分析(譬如jhat/Eclipse Memory Anaylzer)。最常用的使用格式如下:

jmap -dump:file={filename} pid

     范例:如下将堆内存dump到result.bin中

jmap -dump:file=result.bin 23450
显示如下信息:
Dumping heap to …/bin/result.bin ...
Heap dump file created

     二、辅助性工具
    辅助性工具本身没有提供什么功能,只是为功能性工具提供支持
     1. jstatd/jsadebugd:提供远程代理服务,支持jstat/jinfo/jstack通过远程获取信息,这个工具实际意义不大
     2.jhat:分析jmap dump出来的堆,以网页的形式提供访问。jhat功能基本上比较弱,非常占用内存,在堆文件比较大(譬如超过1G)的情况下基本无法使用,Eclipse Memory Anaylzer是一个优秀的替代品。使用格式如下:

jhat {dumpfile}
在堆文件比较大的情况下,需要使用其他的启动参数,譬如如下
jhat –J-mx512M {dumpfile}

    访问http://localhost:7000可以看到分析后的结果
   

0
1
分享到:
评论

相关推荐

    sun-java6-jdk

    JDK是Java程序员开发Java应用程序的基础,包括了Java编译器(javac)、Java虚拟机(JVM)、Java应用程序启动器(java命令)、Java文档生成器(javadoc)以及一系列用于调试、性能分析和其他用途的工具。 2. **Java ...

    jdk1.8 sun源码

    在JDK 1.8版本中,虽然已经包含了大部分核心类库的源代码,但某些特定的Sun Microsystems(后被Oracle收购)实现的内部类或模块,如JNI(Java Native Interface)和一些性能优化的代码,通常并不公开。这些内部实现...

    java,jdk带sun源码

    Java JDK 源码分析与应用 在编程领域,尤其是Java开发中,深入理解JDK源码对于提升技术水平和解决实际问题至关重要。"java,jdk带sun源码"的资源包含的是Java JDK的核心源代码,其中包括了`javax`、`com`、`launcher...

    java-jdk介绍

    Java Development Kit(JDK),即Java开发工具包,是Sun Microsystems(现已被Oracle收购)为Java开发者提供的一套完整的工具集合。它包含了Java Runtime Environment (JRE) 和一系列的Java开发工具,用于编写、编译...

    jdk sun 开头的源码

    Java开发工具包(JDK)是Java编程语言的核心组件,包含了大量的类库和工具,使得开发者能够编写、编译和运行Java程序。在JDK中,"sun"开头的源码包是Oracle(原Sun Microsystems)公司提供的核心API,它们包含了Java...

    JAVA性能分析

    1. **准备Jvisualvm工具**: Jvisualvm是JDK自带的性能监控和分析工具。在Windows环境下,可以在JDK的bin目录下找到`jvisualvm.exe`文件,双击即可启动。 2. **配置Jvisualvm**: 需要在`lib\visualvm\etc\visualvm....

    java jdk源代码

    Java JDK源代码是Java开发工具包的原始代码,对于任何想要深入理解Java语言工作原理的开发者来说,它都是一个无价的学习资源。JDK包含了Java运行环境、编译器、类库以及各种工具,它的源代码揭示了Java平台的内部...

    工具jdk资源共享

    在描述中提到的“jd1.6工具”,可能是指JDK 1.6中的特定工具,如JConsole(一个用于监视Java应用程序的图形化用户界面)、JVisualVM(一个多合一的Java性能分析工具),或者是开发者常用的Javadoc(用于生成API文档...

    Sun JDK 1.6内存管理--调优篇

    《Sun JDK 1.6内存管理--调优篇》深入探讨了Java开发中的关键环节——JVM内存管理和性能优化。Sun JDK 1.6作为早期的Java开发环境,其内存管理机制对于理解现代JVM的工作原理至关重要。本文将详细解析JVM内存结构,...

    java jdk_1.6

    6. **开发者工具**:JDK还包括诸如jconsole(性能监控工具)、jvisualvm(多合一的Java应用程序性能分析工具)、appletviewer(用于本地测试Applet)等,这些工具对于调试和优化Java应用程序至关重要。 7. **Java...

    JAVA JDK1.6源代码

    JAVA JDK1.6源代码是Java开发工具包(Java Development Kit)的第1.6版本的源码集合,它揭示了Java平台的核心组件和运行时环境的工作原理。对于Java开发者来说,深入理解JDK源代码能够提升编程技能,了解底层实现,...

    jdk-17.0.8.zip(windows免安装版本)

    5. **其他工具**:如jar工具用于打包和管理Java档案,jconsole用于监视Java应用的性能,jmap用于分析堆内存,jstack用于生成线程堆栈转储等。 JDK 17.0.8作为长期支持(LTS)版本,意味着它将获得更长时间的安全...

    jdk1.8源码包含sun

    《深入解析JDK1.8源码中的...总之,"sun"包是JDK1.8源码中的一个重要组成部分,它揭示了Java平台的许多核心秘密。深入研究这些源码,不仅可以帮助我们更好地理解和优化Java程序,还能激发对编程更深层次的理解和热爱。

    java 软件安装的JDK配置方法

    首先,JDK(Java Development Kit)是Java开发的核心工具集,它包含了Java编译器javac、解释器java以及各种开发和调试所需的库。JDK的下载通常可以在Oracle的官方网站上进行,地址为...

    java JDK1.6.0源码 源代码

    Java JDK 1.6.0源码是Java开发者的重要参考资料,它揭示了JDK的核心类库是如何实现的,包括各种核心API和基础组件。对于深入理解Java语言、优化代码以及学习设计模式都有着不可估量的价值。 1. **Java类库**: - `...

    Tomcat开启JMX功能,使jdk自带的JVisvualVM工具连接JVM,轻松进行性能分析(csdn)————.pdf

    本文将详细介绍如何开启Tomcat的JMX(Java Management Extensions)功能,以及如何使用JDK自带的JVisualVM工具来连接JVM进行性能分析。 **1. Tomcat开启JMX功能** JMX是一种标准的Java技术,它允许开发人员管理并...

    从Sun JDK5、6、7看Java的提升.pdf

    从Sun JDK5、6、7看Java的提升 Java语言发展历程中,Sun JDK 5、6、7版本带来了许多重要的提升,这些提升极大地影响了Java开发人员的编码体验。下面,我们将对这些提升进行详细的分析。 语言层面提升 在语言层面...

    JDK源码(sun包)

    - **sun.misc**:这个包包含了一些工具类和JVM相关的辅助类,如`sun.misc.Unsafe`,这是一个非常强大的类,可以访问和修改Java对象的内存,执行低级别的操作,但使用需谨慎。 - **sun.nio**:提供了非阻塞I/O的...

    jdk6新强工具使用,触摸JAVA内存管理机制

    标题中的“jdk6新强工具使用,触摸JAVA内存管理机制”指的是在Java Development Kit (JDK) 6版本中引入的一些强大的性能分析和诊断工具,这些工具帮助开发者深入理解Java应用程序的内存使用情况,从而优化程序性能。...

    Sun JDK 1.6内存管理--调优篇-毕玄

    《Sun JDK 1.6内存管理—调优篇》由毕玄撰写,旨在深入探讨Java虚拟机(JVM)在Sun JDK 1.6版本下的内存管理与优化策略。本文将详细解读该文中的核心知识点,包括GC调优的基本技巧、编写对GC友好的代码方法,以及...

Global site tag (gtag.js) - Google Analytics