<b>关于Java性能监控您不知道的5件事,第2部份:操作JDK内置解析器</b>[Java编程]
本文“<b>关于Java性能监控您不知道的5件事,第2部份:操作JDK内置解析器</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
关于Java性能监控您不知道的5件事,第2部份:操纵JDK内置解析器举行Java进程监控
全功效内置解析器,如 JConsole 和 VisualVM 的本钱有时比它们的性能费用还要高 — 特别是在生产软件上运行的系统中.因此,在聚焦 Java 性能监控的第 2 篇文章中,我将介绍 5 个号令行解析工具,使开辟人员仅关注运行的 Java 进程的一个方面.
JDK 包含很多号令行实用程序,可以用于监控和管理 Java 利用程序性能.固然大大都这类利用程序都被标注为 “实行型”,在技术上不受支持,但是它们很有效.有些乃至是特定用处工具的种子质料,可以利用 JVMTI 或 JDI成立.
1. jps (sun.tools.jps)
很多号令行工具都要求您辨认您但愿监控的 Java 进程.这与监控本地操作系统进程、一样需求一个程序辨认器的同类工具没有太大辨别.
“VMID” 辨认器与本地操作系统进程辨认器(“pid”)并不老是相同的,这就是我们需求 JDK jps 实用程序的缘由.
在 Java 进程中利用 jps
与配置 JDK 的大部份工具及本文中说起的全部工具一样,可履行 jps 普通是一个环绕 Java 类或履行大大都工作的类集的一个薄包装.在 Windows® 环境下,这些工具是 .exe 文件,利用 JNI Invocation API 直接调用上面说起的类;在 UNIX® 环境下,大大都工具是一个 shell 脚本的标记链接,该脚本采取指定的精确类名称开始一个普通启动程序.
假如您但愿在 Java 进程中利用 jps(大概任何其他工具)的功效 — Ant 脚本 — 仅在每个工具的 “主” 类上调用 main() 相对简单.为了简化引用,类名称呈目前每个工具名称之后的括号内.
jps — 名称反映了在大大都 UNIX 系统上发现的 ps 实用程序 — 奉告我们运行 Java 利用程序的 JVMID.顾名思义,jps 返回指定机械上运行的全部已发现的 Java 进程的 VMID.假如 jps 没有发现进程,并不意味着无法附加或研究 Java 进程,而只是意味着它并未宣扬自己的可用性.
假如发现 Java 进程,jps 将列出启用它的号令行.这种辨别 Java 进程的办法非常重要,因为只要触及操作系统,全部的 Java 进程都被统称为 “java”.在大大都情形下,VMID 是值得注意的重要数字.
利用解析器开始
利用解析实用程序开始的最简单办法是利用一个如在 demo/jfc/SwingSet2 中发现的 SwingSet2 演示一样的演示程序.这样便可以避免程序作为后台/监控程序运行时呈现挂起的大概性.当您理解工具及其费用后,便可以在实际程序中举行试用.
加载演示利用程序后,运行 jps 并注意返回的 vmid.为了得到更好的效果,采取 -Dcom.sun.management.jmxremote 属性集启动 Java 进程.假如没有利用该设置,部份下列工具汇集的部份数据大概不可用.
2. jstat (sun.tools.jstat)
jstat 实用程序可以用于汇集各种各样差别的统计数据.jstat 统计数据被分类到 “选项” 中,这些选项在号令行中被指定作为第一参数.关于 JDK 1.6 来说,您可以通过采取号令 -options 运行 jstat 查看可用的选项清单.清单 1 中显示了部份选项:
清单 1. jstat 选项
-class
-compiler
-gc
-gccapacity
-gccause
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcpermcapacity
-gcutil
-printcompilation
实用程序的 JDK 记录将奉告您清单 1 中每个选项返回的内容,但是此中大大都用于汇集垃圾的汇集器大概其部件的性能信息.-class 选项显示了加载及未加载的类(使其成为检测利用程序服务器或代码中 ClassLoader 泄露的重要实用程序,且 -compiler 和 -printcompilation 都显示了有关 Hotspot JIT 编译程序的信息.
默许情形下,jstat 在您查对信息时显示信息.假如您但愿每隔一按时间拍摄快照,请在 -options 指令后以毫秒为单位指定隔断时间.jstat 将持续显示监控进程信息的快照.假如您但愿 jstat 在终止前举行特定数目的快照,在隔断时间/时间值后指定该数字.
假如 5756 是几分钟前开始的运行 SwingSet2 程序的 VMID,那么下列号令将奉告 jstat 每 250 毫秒为 10 个佚代履行一次 gc 快照转储,然后终止:
jstat -gc 5756 250 10
请注意 Sun(目前的 Oracle)保存了在不举行任何预先告诉的情形下更改各种选项的输出乃至是选项本身的权利.这是利用不受支持实用程序的缺陷.请参看 Javadocs 理解 jstat 输出中每一列的全部细节.
以上是“<b>关于Java性能监控您不知道的5件事,第2部份:操作JDK内置解析器</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |