JDK的命令行工具。

        Java开发人员肯定都知道JDK的bin目录中有“java.exe”、“javac.exe”这两个命令行工具,但并非所有程序员都了解过JDk的bin目录之中其他命令行程序的作用。每逢JDK更新版本之时,bin目录下命令行工具的数量和功能总会不知不觉的增加和增强。bin目录的内容如下图所示。

         在这些工具的其中一部分,主要包括用于监视虚拟机和故障处理的工具。这些故障处理工具被Sun公司作为“礼物”附赠给JDK的使用者,并在软件的使用说明中把他们声明为“没有技术支持并且是实验性质的”(unsupported and experimental)的产品,但事实上,这些工具都非常稳定而且功能强大,能在处理应用程序性能问题、定位故障时发挥很大的作用。

        说起JDK的工具,可能会注意到这些工具的程序体积都异常小巧。假如以前没有没注意到,现在不妨再看看上图中的最后一列“大小”,几乎所有工具的体积基本上都稳定在27KB左右。并非JDK开发团队刻意把他们制作得如此精炼来炫耀编程水平,而是因为这些命令行工具大多数是jdk/lib/tools.jar类库的一层薄包装而已,他们主要的功能代码是在tools类库中实现的。把上图和下图两张图片对比一下就可以看的很清楚。

        假如读者使用的是Linux版本的JDK,还会发现这些工具中很多甚至就是由Shell脚本直接写成的,可以用vim直接打开他们。

        JDK开发团队选择采用Java代码来实现这些监控工具是有特别用意的:当应用程序部署到生产环境后,无论是直接接触物理服务器还是远程Telnet到服务器上都可能会受到限制。借助tools.jar类库里面的接口,我们可以直接在应用程序中实现功能强大的监控分析功能。

        需要特别说明的是,这里介绍的工具全部基于Windows平台下的JDK 1.6 Update 21,如果JDK版本、操作系统不同,工具所支持的功能可能会有较大差别。大部分工具在JDK 1.5中就已经提供,但为了避免运行环境带来的差异和兼容性问题,建议使用JDK 1.6来验证介绍的内容,因为JDK 1.6的工具可以正常兼容运行于JDK 1.5的虚拟机之上的程序,反之则不一定。下表说明了JDK主要命令行监控工具的用途。

 

名称主要作用
jpsJVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程
jstatJVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据
jinfoConfiguration Info for Java,显示虚拟机配置信息
jmapMemory Map for Java,生成虚拟机的内存转储快照(heapdump文件)
jhatJVM Heap Dump Browser,用于分析heapdump文件,他会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果
jstackStack Trace for Java,显示虚拟机的线程快照

        注意,如果在工作中需要监控运行于JDK 1.5的虚拟机之上的程序,在程序启动时请添加参数“-Dcom.sun.management.jmxremote”开启JMX管理功能,否则由于部分工具都是基于JMX,他们都将会无法使用,如果被监控程序运行于JDK 1.6的虚拟机之上,那JMX管理默认是开启的,虚拟机启动无须再添加任何参数。

        注意,tools.jar中的类库不属于Java的标准API,如果引入这个类库,就意味着用户的程序只能运行于Sun Hotspot(或一些从Sun公司购买了JDK的源码License的虚拟机,如IBM J9、BEA JRockit)上面,或者在部署程序时需要一起部署tools.jar。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值