在Linux或其他UNIX和类UNIX环境下,ps命令想必大家都不陌生,我相信也有不少同学写过 ps aux | grep java | grep -v grep | awk '{print $2}' 这样的管道命令来找出Java进程的pid。常言道,Java并非真的"跨平台",它自己就是平台。作为平台,当然也有些基本的工具,让我们可以用更简单、更统一,同时又是非侵入的方式来查询进程相关信息。今天我们就来认识一下其中的两个。

jps

顾名思义,它对应到UNIX的ps命令。用法如下:

jps [ options ] [ hostid ]

其中,options可以用 -q (安静) -m (输出传递给main方法的参数) -l (显示完整路径) -v (显示传递给JVM的命令行参数) -V (显示通过flag文件传递给JVM的参数) -J (和其他Java工具类似用于传递参数给命令本身要调用的java进程);hostid是主机id,默认localhost。

jstat

用于输出给定java进程的统计信息。用法如下:

jstat -options 可以列出当前JVM版本支持的选项,常见的有 -class (类加载器) -compiler (JIT) -gc (GC堆状态) -gccapacity (各区大小) -gccause (最近一次GC统计和原因) -gcnew (新区统计) -gcnewcapacity (新区大小) -gcold (老区统计) -gcoldcapacity (老区大小) -gcpermcapacity (永久区大小) -gcutil (GC统计汇总) -printcompilation (HotSpot编译统计)

假定你要监控的Java进程号是12345,那么
jstat -gcutil -t 12345 200 300 即可每200毫秒连续打印300次带有时间戳的GC统计信息。

简单解释一下: -gcutil是传入的option;必选,-t是打印时间戳,是以目标JVM启动时间为起点计算的,可选;12345是vmid/pid,和我们从jps拿到的是一样的,必选;200是监控时间间隔,可选,不提供就意味着单次输出;300是最大输出次数,可选,不提供且监控时间间隔有值的话,就是无限期打印下去。

具体输出明细的解释请参考官方文档 http://download.oracle.com/javase/6/docs/technotes/tools/share/jstat.html

最新文章

  1. ASP.NET MVC搭建项目后台UI框架—7、统计报表
  2. Tomcat服务器中配置多个域名,访问不同的web项目
  3. Windows server 修改mysql端口
  4. springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
  5. jQuery选择器之动态列表显示Demo
  6. [转]C++学习心得
  7. HDU 5059 Help him(细节)
  8. DevExpress 控件使用之GridControl基本属性设置
  9. LSTM基础
  10. Redis配置主从复制
  11. 学用纯CSS打造可折叠树状菜单
  12. Day 6-3 粘包现象
  13. VS插件File Nesting
  14. Resct配置less
  15. python检测网络延迟
  16. dubbo-admin在jdk8下不兼容
  17. Swift: 用Alamofire做http请求,用ObjectMapper解析JSON
  18. MySql 正则表达式简介及使用
  19. apache 允许 访问软链接 ( Apache won't follow symlinks (403 Forbidden) )
  20. pyspark视频

热门文章

  1. Windows Phone 8.1 列表控件(2):分组数据
  2. Open Live Writer增加代码插件
  3. manifest save for self
  4. 写了个Linux包过滤防火墙
  5. 写文件前, 检查目录写权限(PHP)
  6. maven项目转eclipse工程的命令:eclipse.bat
  7. jdbc学习(一)——SqlServer、Oracle和MySQL
  8. WPF中利用DynamicDataDisplay快速实现示波器功能
  9. Jsonp 跨域请求实例
  10. 【Passport】微软过时的技术