




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JDK Tools学习笔记JDK Tools是随JDK安装包一同发布的,安装JDK后其可执行文件在$JAVA_HOME/bin目录下。JDK Tools中有许多可用于Java程序的性能诊断,包括:jps,jinfo,jmap,jstack,jstat,jconsole等,本文将介绍这些Java自带的性能诊断工具的基本使用。【注:以下内容以jdk1.6及以上版本为例】目录JDK Tools学习笔记1目录2一、jps3二、jinfo4三、jmap5四、jstack7五、jstat7六、jconsole201.启动jconsole202.内存223.线程234.类245.VM摘要256.MBean26一、jpsjps。如果把j去掉,则是ps命令,这在linux下是一个显示进程信息的命令,顾名思义,jps是显示计算机上当前用户的所有Java进程信息的命令,jps会打印出机器上所有当前用户的Java进程。jps使用格式为:jps options hostid jps的常用参数及其含义如下:-q 只显示pid,不显示class名称、jar文件名和传递给main方法的参数-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名-v 输出传递给JVM的参数参考资料:/javase/6/docs/technotes/tools/share/jps.html二、jinfojinfo可打印出一个给定的Java进程、Java core文件或远程Debug服务器的Java配置信息,具体包括Java系统属性和JVM命令行参数。如果给定的进程在64位机器上运行,需要指定相应的配置项,如:jinfo -J-d64 -sysprops pid。jinfo的使用格式为:jinfo option pidjinfo option executable corejinfo option server-idremote-hostname-or-IP jinfo常用参数及其含义如下:按“属性名=值”的方式打印Java系统配置信息和JVM命令行参数-flag name 打印属性名为name的命令行参数-flag +/- name设置命令行参数name的bool值-flagname=value 设置命令行参数name的值为value-flags 打印所有传递给JVM的命令行参数,与jps v相似。-sysprops打印所有Java系统配置信息,如JVM版本、JVM名称、用户语言、操作系统等。参考资料:/javase/6/docs/technotes/tools/share/jinfo.html三、jmapjmap打印给定pid、Java core文件或远程Debug服务器的共享对象的内容映射或堆内存细节。如果给定进程在64位机器上运行,需要指定相应选项:jmap -J-d64 -heap pidjmap的使用格式为:jmap option pidjmap option executable corejmap option server-idremote-hostname-or-IP jmap常用的参数及其含义如下:未指定选项时,jmap打印共享对象的映射。对每个目标VM加载的共享对象,其起始地址、映射大小及共享对象文件的完整路径将被打印出来,这有点类似Solaris系统的pmap工具。-heap打印堆情况的概要信息,包括堆配置,各堆空间的容量、已使用和空闲情况-histo:live打印堆的历史情况。对每一个Java类,打印其对象数,所占字节数,完整类名。JVM内部类以*为前缀。如果加入了live选项,则只打印存活的对象。-permstat打印堆中持久代类加载器相关统计信息。对每个类加载器,打印出它的名字、活跃度、内存地址、父加载器、该类加载器加载的类的数量和大小。-dump:live,format=b,file=将Java堆信息用hprof二进制格式导出到(Dumps)文件中。 live选项是可选的,带live选项时只打印存活的对象。生成的文件可用jhat(Java Heap Analysis Tool)工具进行分析-finalizerinfo打印等待调用finalize的对象的信息-J 给jmap所运行的JVM传递参数-F 在Java进程没有反应时,强制打印其内存信息参考资料:/javase/6/docs/technotes/tools/share/jmap.html四、jstackjstack打印给定pid、Java core文件或远程Debug服务器的线程堆栈信息。对每一个Java框架,打印其类名、方法名、字节码地址 (byte code index)以及行号。注:将来的jdk版本可能不再附带jstack工具!jstack的使用格式为:jstack option pidjstack option executable corejstack option server-idremote-hostname-or-IP jstack常用的参数及含义如下-F在Java进程没有响应时强制打印-l长列表,打印每个Java线程所持有锁的附加信息-m混合模式打印,打印包括c+的本地线程栈信息及Java栈信息。参考资料:/javase/6/docs/technotes/tools/share/jstack.html五、jstat jstat能够动态打印jvm(Java Virtual Machine Statistics Monitoring Tool)的相关统计信息。如young gc执行的次数、full gc执行的次数,各个内存分区的空间大小和可使用量等信息。在认识jstat之前,先来认识一下JVM的内存结构,如下图所示:JVM内存划分为年轻代(Young)和年老代(Tenured),Young GC是指是针对年轻代中的无用对象进行垃圾回收,而Full GC则会对年轻代和年老代中的无用对象均进行垃圾回收。上图中Virtual为可伸缩部分,即初始可以指定一个内存空间最大值和初始值,随着程序运行空间会进行增长。Young:年轻代,具体包括Eden、Survivor0、Survivor1; Eden:初始分配的对象最先存放到这里;Survivor0和Survivor1:存放Eden中经过若干次Young GC仍存活的对象,Survivor0和Survivor1轮流被使用,当GC执行时,会从其中一个空间中拷贝存活对象到另一空间中。Tenured:存放Survivor1中经过若干次Young GC仍存活的对象,这里的对象只有Full GC才可能回收;Perm:存放Java类,常量等静态内容。jstat的使用格式如下:jstat generalOption | outputOptions vmid intervals|ms count generalOption单一的命令行参数,如-help,-version等outputOptions一个或多个输出选项,还可以加上-h,-t或-Jvmid JVM标识符,可以是单一的进程号,也可以是远程JVM标识,其通用语法为:protocol:/lvmidhostname:port/servernameinterval时间间隔,每两次打印信息之间的时间间隔count打印次数,在屏幕上打印多少次信息【注:jstat在将来的jdk版本中可能不被支持,目前的jdk版本中,在win98和windows me平台中不支持】命令行选项及含义如下:-help显示帮助信息-version显示版本信息-options显示统计信息所有输出选项如果你没有指定命令行选项,则你可以指定输出内容选项,输出内容选项及其含义如下:class统计类装载器的行为compiler统计HotSpot Just-in-Time 编译器的行为gc统计堆内存gc的行为gccapacity统计各代的容易及对应空间gccause统计垃圾回收信息, 以及引起垃圾回收事件的原因gcnew统计年轻代行为gcnewcapacity统计年轻代大小及其对应空间gcold统计老年代和永久代行为gcoldcapacity统计老年代大小gcpermcapacity统计永久代大小gcutil垃圾回收情况统计printcompilationHotSpot编译方法统计-h n每相隔n行之后,打印一次表头-t n在输出数据的第一列打印一个timestamp,这个timestamp标示目标JVM运行了多长时间。-JjavaOption,将JVM参数传递给运行jstat的JVM各选项的具体打印结果列如下表:-class类加载信息统计列名描述Loaded加载的类数量.Bytes加载的大小.Unloaded卸载的类数量.Bytes卸载的大小Time类加载与卸载所占用的时间-compilerHotSpot JIT 编译器统计列名描述Compiled编译任务数Failed失败的编译任务数Invalid无效的编译任务数Time执行编译任务所占用的时间FailedType最近一次编译失败的类型FailedMethod最后一次编译失败的类及方法名-gc堆内存gc统计列名描述S0C当前survivor space 0 容量 (KB).S1C当前survivor space 1 容量 (KB).S0USurvivor space 0 使用量 (KB).S1USurvivor space 1 使用量 (KB).EC当前 eden space 容量 (KB).EUEden space 使用量 (KB).OC当前 old space 容量 (KB).OUOld space 使用量 (KB).PC当前 permanent space 容量 (KB).PUPermanent space 使用量 (KB).YGC年轻代GC次数.YGCT年轻代GC占用的时间FGCFull GC 次数.FGCTFull GC占用的时间GCT垃圾回收占用的总时间-gccapacity内存池代及空间统计列名描述NGCMN年轻代最小容量 (KB).NGCMX年轻代最大容量(KB).NGC当前年轻代容量 (KB).S0C当前 survivor space 0 容量 (KB).S1C当前 survivor space 1 容量 (KB).EC当前 eden space 容量 (KB).OGCMN老年代(old generation)最小容量(KB).OGCMX老年代(old generation)最大容量(KB).OGC当前老年代( old generation)容量 (KB).OC当前 old space 容量 (KB).PGCMN最小永久代( permanent generation)容量 (KB).PGCMX最大永久代( Permanent generation)容量 (KB).PGC当前永久代( Permanent generation) 容量 (KB).PC当前 (Permanent space)容量 (KB).YGC年轻代GC次数.FGCFull GC 次数.-gccause该选项与-gcutil选项类似,不过多了下面两列信息:GC统计, 包括GC事件列名描述LGCC最近一次进行GC事件的原因GCC触发当前GC事件的原因-gcnew年轻代统计列名描述S0C当前 survivor space 0 容量 (KB).S1C当前survivor space 1容量(KB).S0USurvivor space 0 使用量 (KB).S1USurvivor space 1使用量(KB).TTTenuring 阈值.MTT最大 tenuring 阈值.DSSDesired survivor size (KB).EC当前eden space 容量 (KB).EUEden space 使用量 (KB).YGCyoung GC 次数.YGCTyoung GC 用时-gcnewcapacity年轻代空间统计列名描述NGCMN最小 new generation 容量 (KB).NGCMX 最大new generation容量(KB).NGC 当前 new generation容量(KB).S0CMX最大survivor space 0容量(KB).S0C当前survivor space 0容量(KB).S1CMX最大survivor space 1容量(KB).S1C当前survivor space 1容量(KB).ECMX最大eden space容量(KB).EC当前eden space容量(KB).YGCYoung GC 次数.FGCFull GC 次数.-gcold老年及永久代统计列名描述PC当前 permanent space 容量 (KB).PUPermanent space 使用量 (KB).OC当前 old space 容量 (KB).OUold space 使用量 (KB).YGCYoung GC 次数FGCFull GC 次数FGCTFull GC 用时.GCTGC总用时-gcoldcapacity老年代统计列名描述OGCMN最小 old generation 容量 (KB).OGCMX最大 old generation 容量 (KB).OGC当前 old generation 容量 (KB).OC当前 old space 容量 (KB).YGCYoung GC 次数FGCFull GC 次数FGCTFull GC 用时.GCTGC总用时-gcpermcapacity永久代统计列名描述PGCMN最小 permanent generation容量(KB).PGCMX最大 permanent generation容量(KB).PGC当前 permanent generation容量(KB).PC当前 permanent space容量(KB).YGCYoung GC 次数FGCFull GC 次数FGCTFull GC 用时.GCTGC总用时-gcutilGC情况统计列名描述S0Survivor space 0占当前总空间大小的使用百分比.S1Survivor space 1占当前总空间大小的使用百分比.EEden space占当前总空间大小的使用百分比.OOld space占当前总空间大小的使用百分比.PPermanent space占当前总空间大小的使用百分比.YGC年轻代GC次数.YGCT年轻代GC占用的时间FGCFull GC 次数.FGCTFull GC占用的时间GCT垃圾回收占用的总时间-printcompilationHotSpot编译器方法统计列名描述Compiled执行的编译任务数.Size方法的字节码大小Type编译类型.Method类名和方法名唯一标识编译类型,类名用/代替.作为分隔符。方法名是给定类的方法名,这两个字段的格式取决于参数 HotSpot -XX:+PrintComplationoption.参考资料:/javase/6/docs/technotes/tools/share/jstat.html六、jconsolejconsole是一个基于JMX(Java Management Extensions,即Java管理扩展)图形化程序,它可以用来监控运行中的JVM情况,具体包括内存、线程、类、VM摘要等,同时还可以通过实时地改变JVM的配置来查看系统在不同参数下的情况。在命令行中启动jconsole时,可以加入一些参数,其含义如下:-interval=n 表示刷新时间间隔,默认为4,单位为s;-notile 连接多个进程时窗口不折叠;-pluginpath plugins 加载实现了com.sun.tools.jconsole.JConsolePlugin 的jconsole插件。下面将分别介绍jconsole的启动及使用。1.启动jconsole启动jconsole之后,可以看见连接进程的选择窗口,如图1所示:图1 使用jconsole建立连接图1可以看到,jconsole有两种连接方式:(1)本地连接:在迚程列表中可以看到JAVA迚程的PID(这些迚程必须都是用JDK1.6的java.exe来启劢),选中幵连接即可。(2)远程连接:可以使用:来连接进程服务器的Java远程进程(可以使用jps来查看正在运行的Java迚程port),还可以使用service:jmx:来连接JMXService(其中protocol为传输协议,sap是查找连接到服务器的地址位置),关于jmx路径的完整语法可以参考javax.management.remote.JMXServiceURL的官方API文档:/yxsz/jjglxy/book/Java_api/javax/management/remote/class-use/JMXServiceURL.html。jconsole连接了某一个进程之后,将会有六个标签页,它们分别是概述、内存、线程、类、VM摘要和MBean,如图2所示。其中概述页显示了内存、线程、类及VM摘要的最概略情况,内存、线程、类和VM摘要标签页详细展示了这四类信息。下面将分别介绍这些标签页的作用。图2 概述2.内存内存标签页显示了JVM的内存使用情况,可对需要查看的内存类型和时间进行选择,具体包括:堆/非堆内存、Eden Space、Survivor Space、Tenured Gen、Code Cache和Perm Gen使用情况,赶时间上可选择12小时、1天、7天、1个月等。在页面最下方,可以看到时刻的详细信息,页面右下方可以看到使用比例,页面的右上角执行GC按钮可点击进行手动执行GC。Code Cache是HotSpot JVM用来保存编译的本地代码(Native Code)的一块非堆内存区域。图3 内存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 计算机研究生论文
- 河南省中小学心理健康教育网手机端
- 农村土地使用权互换的协议书
- 心理动力激发研究
- 保洁劳务承包合同
- 热量表大数据分析-洞察及研究
- 微生物极地生存策略-洞察及研究
- 客户旅程触点优化-洞察及研究
- 2025-2030中国无糖麦片市场竞争策略及消费趋势预测报告
- 金融科技与证券市场-洞察阐释
- DL-T-5438-2019输变电工程经济评价导则
- 宏观经济学全套课件(完整)
- 柬埔寨高棉语学习
- JBT 14609-2023 农林拖拉机和机械 交流发电机 (正式版)
- 2023年新疆维吾尔自治区乌鲁木齐市天山区小升初数学试卷(内含答案解析)
- 计算机基础知识题库1000道含完整答案(历年真题)
- 2023年陕西初中地理生物会考卷子
- 府谷县国能煤矿矿山地质环境保护与土地复垦方案
- 初中物理-摩擦力课件-市公开课一等奖省赛课获奖课件
- 社会稳定风险评估 投标方案(技术标)
- 常见土源性寄生虫
评论
0/150
提交评论