`
ayufox
  • 浏览: 273091 次
  • 性别: 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
分享到:
评论

相关推荐

    jdk sun 开头的源码

    jdk sun 开头的源码 有利于分析sun 底层的相关实现, 如channel ,nio等

    java源码剖析-JavaSourceLearn:JDK1.8源码的代码分析和学习

    JDK1.8源码分析 导入源码过程中的注意事项 源码在%JAVA_HOME%\src.zip 源码在src目录下 以下两个类手动添加的,解决编译过程中该包的丢失 sun.font.FontConfigManager sun.awt.UNIXToolkit 其中: 1.请手动添加jdk...

    sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用已解决

    冲浪后发现JDK中的lib\tools.jar和JRE中的lib\rt.jar已从Java SE 9中删除,也就是1.8版本后的jdk已经不再支持sun.misc.BASE64Decoder和sun.misc.BASE64Encoder。 这些JAR中可用的类和资源现在以文件中的内部格式存储...

    JAVA基础,常见java基础问题.rar

    JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。 JRE顾名思义是java运行时环境,...

    Java问题定位技术.pdf

    2.通过Java线程堆栈进行性能瓶颈分析 3.Java内存泄漏分析和堆内存设置 4.关于并发和多线程 5.幽灵代码 6.常见的Java泥潭 7.JVM 8.关于字符集与编码 9.常用分析工具 10.Java最佳实践 11.关于数据库 12.工程实践 13....

    java初学者的工具ppt文件

    Java的体系分为Java SE、Java EE和Java ME(JDK 5.0以前分别叫J2SE、J2EE和J2ME),Java的敲门砖就是Java SE了,也就是你要入门学习的内容,不论你日后是选择哪个体系领域作为发展方向,你都得从Java SE起步。...

    JavaFlightRecorderMissionControl一个高效的性能分析工具

    朱光宇(效山)阿里巴巴系统软件部技术专家,长期致力于JVM、操作系统等基础软件的研发...曾经参与过Sun Hotspot JVM(micro edition) 、Android on x86、YunOS的研发和优化,目前从事Cloud环境下AJDK性能分析工具的研发。

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-015-Java语言概述-JDK的安装及重要文件介绍.mp4 北京动力节点-Java编程零基础教程-016-Java语言概述-Java及SUN发展大记要.mp4 北京动力节点-Java编程零基础教程-017-Java语言...

    垃圾猫:解析Java垃圾收集日志并分析收集器,触发器,JVM版本,JVM选项和OS信息,并报告errorwarninfo级别的分析和建议,以支持针对OpenJDK和SunOracle JDK的JVM调整和故障排除

    一个命令行工具,用于解析Java垃圾收集日志并进行分析,以支持针对OpenJDK和Sun / Oracle JDK的JVM调整和故障排除。 它与其他工具的不同之处在于,它超出了计算统计信息(例如最大暂停时间和吞吐量)的简单数学范围...

    Collections源码java-jdk1.8-source-analysis:Java8源码分析,J.U.C、ThreadPool、Col

    JDK1.8源码分析 导入源码过程中的注意事项 JDK1.8对应JDK版本下载: 提取码:49wi 源码在src目录下 以下两个类手动添加的,解决编译过程中该包的丢失 sun.font.FontConfigManager sun.awt.UNIXToolkit 其中: 1.请...

    java调用打印机打印的相关教程

    实际上,SUN公司也一直致力于Java打印功能的完善,而Java2平台则终于有了一个健壮的打印模式的开端,该打印模式与Java2D图形包充分结合成一体。更令人鼓舞的是,新发布的jdk1.4则提供了一套完整的"Java 打印服务 API...

    Java虚拟机规范中文版

    但分析程序的执行行为问题(虚拟机是怎样做的、性能如何)则意义不大,如需对具体虚拟机实现进行调优、性能分析等,我推荐在本书基础上继续阅读《Java Performance》和《Oracle JRockit The Definitive Guide》等书...

    jdk1.8-source-analysis:Java 8源码分析,JUC,ThreadPool,Collection

    JDK1.8源码分析 引入原始过程中的注意事项 JDK1.8对应JDK版本下载: 码:49wi 原始码在src目录下 以下两个类手动添加的,解决编译过程中该包的丢失 sun.font.FontConfigManager sun.awt.UNIXToolkit 其中:1.请...

    java开发中如何使用JVisualVM进行性能分析

    JVisualVM是由Sun提供的性能分析工具,如此强大的后盾怎能不强大?在Jdk6.0以后的版本中是自带的,配置好环境变量然后在运行中输入“JVisualVm”或直接到Jdk的安装目录的Bin目录下找到运行程序即可运行。如果是用Jdk...

    JAVA 堆栈内存分析

    如何调优JVM - 优化Java 虚拟机(大全+ 实例) 堆设置 -Xmx3550m :设置JVM 最大堆内存为3550M 。 -Xms3550m :设置JVM 初始堆内存为3550M。...值对系统性能影响较大, Sun 官方推荐配置为整个堆的3/8 。

    JAVA实验报告一.docx

    本课程是一门程序设计语言课程,通过本课程的学习,学生能够掌握Java语言程序的基本特点、基本编程方法和基本开发技巧,培养学生阅读、分析、设计和调试Java语言的能力,并具备一定的面向对象程序设计思想。...

    jdk1.8-source-analysis:JDK1.8源码分析

    jdk1.8-source-analysis JDK1.8源码分析引入原始过程中的注意事项JDK1.8对应JDK版本下载: 码:49wi原始码在src目录下以下两个类手动添加的,解决编译过程中该包的丢失sun.font.FontConfigManager sun.awt....

    Java虚拟机

    第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、模块化,以及JDK的编译,这对理解本书后面内容有重要帮助。第二部分讲解了JVM的自动内存管理,包括虚拟机内存区域的划分原理以及各种内存溢出...

    Java打印程序设计

    实际上,SUN公司也一直致力于Java打印功能的完善,而Java2平台则终于有了一个健壮的打印模式的开端,该打印模式与Java2D图形包充分结合成一体。更令人鼓舞的是,新发布的jdk1.4则提供了一套完整的"Java 打印服务 API...

    jdk8-source-code:jdk源码解析

    jdk1.8-source-analysis JDK1.8源码分析引入原始过程中的注意事项JDK1.8对应JDK版本下载: 码:49wi原始码在src目录下以下两个类手动添加的,解决编译过程中该包的丢失sun.font.FontConfigManager sun.awt....

Global site tag (gtag.js) - Google Analytics