2008年03月04日 16:57
原作者: stone2083 原文地址:http://www.blogjava.net/stone2083/archive/2008/02/25/182081.html

jstatd
启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099。
实例:jstatd -J-Djava.security.policy=my.policy

my.policy文件需要自己建立,内如如下:
grant codebase "file:$JAVA_HOME/lib/tools.jar" {
permission java.security.AllPermission;
};
这是安全策略文件,因为jdk对jvm做了jaas的安全检测,所以我们必须设置一些策略,使得jstatd被允许作网络操作

jps
列出所有的jvm实例
实例:
jps
列出本机所有的jvm实例

jps 192.168.0.77
列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为1099
(前提是远程服务器提供jstatd服务)

输出内容如下:
jones@jones:~/data/ebook/java/j2se/jdk_gc$ jps
6286 Jps
6174 Jstat

jconsole
一个图形化界面,可以观察到java进程的gc,class,内存等信息。虽然比较直观,但是个人还是比较倾向于使用jstat命令(在最后一部分会对jstat作详细的介绍)。

jinfo(linux下特有)
观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数
实例:jinfo 2083
其中2083就是java进程id号,可以用jps得到这个id号。
输出内容太多了,不在这里一一列举,大家可以自己尝试这个命令。

jstack(linux下特有)
可以观察到jvm中当前所有线程的运行情况和线程当前状态
jstack 2083
输出内容如下:

jmap(linux下特有,也是很常用的一个命令)
观察运行中的jvm物理内存的占用情况。
参数如下:
-heap
:打印jvm heap的情况
-histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
-histo:live :同上,但是只答应存活对象的情况
-permstat:打印permanent generation heap情况

命令使用:
jmap -heap 2083
可以观察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况
输出内容:

jmap -histo 2083 | jmap -histo:live 2083
可以观察heap中所有对象的情况(heap中所有生存的对象的情况)。包括对象数量和所占空间大小。
输出内容:

写个脚本,可以很快把占用heap最大的对象找出来,对付内存泄漏特别有效。

jstat
最后要重点介绍下这个命令。
这是jdk命令中比较重要,也是相当实用的一个命令,可以观察到classloader,compiler,gc相关信息
具体参数如下:
-class:统计class loader行为信息
-compile:统计编译行为信息
-gc:统计jdk gc时heap信息
-gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况
-gccause:统计gc的情况,(同-gcutil)和引起gc的事件
-gcnew:统计gc时,新生代的情况
-gcnewcapacity:统计gc时,新生代heap容量
-gcold:统计gc时,老年区的情况
-gcoldcapacity:统计gc时,老年区heap容量
-gcpermcapacity:统计gc时,permanent区heap容量
-gcutil:统计gc时,heap情况
-printcompilation:不知道干什么的,一直没用过。

一般比较常用的几个参数是:
jstat -class 2083 1000 10 (每隔1秒监控一次,一共做10次)
输出内容含义如下:

Loaded Number of classes loaded.
Bytes Number of Kbytes loaded.
Unloaded Number of classes unloaded.
Bytes Number of Kbytes unloaded.
Time Time spent performing class load and unload operations.

jstat -gc 2083 2000 20(每隔2秒监控一次,共做10)
输出内容含义如下:

S0C Current survivor space 0 capacity (KB).
EC Current eden space capacity (KB).
EU Eden space utilization (KB).
OC Current old space capacity (KB).
OU Old space utilization (KB).
PC Current permanent space capacity (KB).
PU Permanent space utilization (KB).
YGC Number of young generation GC Events.
YGCT Young generation garbage collection time.
FGC Number of full GC events.
FGCT Full garbage collection time.
GCT Total garbage collection time.

输出内容:

如果能熟练运用这些命令,尤其是在linux下,那么完全可以代替jprofile等监控工具了,谁让它收费呢。呵呵。
用命令的好处就是速度快,并且辅助于其他命令,比如grep gawk sed等,可以组装多种符合自己需求的工具。

(转)JVM监控工具介绍相关推荐

  1. JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta (Linux 如何查看进程的各线程的CPU占用 )

    http://dolphin-ygj.iteye.com/blog/366216 JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta 博客分类: 调优 ...

  2. JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat

    http://my.oschina.net/timer/blog/10599 jstack -- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和 ...

  3. java调优方法,jvm监控工具

    graph LR A-->B 性能概述 程序性能表现形式 执行速度:程序响应速度,总耗时是否足够短 内存分配:内存分配是否合理,是否过多消耗内存或者存在泄漏 启动时间:程序运行到可以正常处理业务 ...

  4. 常见的几款JVM监控工具

    本文来说下常见的几款JVM监控工具 文章目录 概述 jps:查看正在运行的Java进程 jstack:打印线程快照 jmap:导出堆内存映像文件 jstat:查看jvm统计信息 jinfo:实时查看和 ...

  5. Java 虚拟机(JVM)原理介绍

    Java 虚拟机[JVM]原理介绍 1.概述 2.Java类的加载原理机制 2.1 .Java类的加载过程 2.2 .Class loader (类加载器) 2.2.1 类的生命周期 2.2.1.1 ...

  6. Java线程及Jvm监控工具

    "昨天晚上很冷让我遇见你,你站在德克士门口等你男朋友, 我站在你对面街上看了你那么久, 你男朋友为何要对你发火,你俩走了好几条街为何他不把你的手放进他的衣兜里, 为什么你男朋友要走在前面,为 ...

  7. 一款轻量的JVM监控工具——Jvmm

    目录 关于Jvmm 功能支持 下载地址 快速上手 监控功能 查看操作系统基础信息 查看操作系统CPU负载.内存使用情况.磁盘占用情况 查看类加载统计 查看类加载器实例信息 查看编译统计信息 查看垃圾收 ...

  8. 监控工具介绍及监控区别

    一.监控工具介绍 1.Cacti Cacti 是一套基于 PHP.MySQL.SNMP 及 RRD Tool 开发的监测图形分析工具,使用轮询的方式由主服务器向设备发送数据请求来获取设备上状态数据信息 ...

  9. JVM Profiler介绍

    开篇  过去的几周把java多线程相关部分的源码粗粗的看了一遍基本上也算告一段落了,后面应该会聚焦看下dubbo.mycat.datax以及剩下部分的mybatis.  应该是周一的时候公众号推了一篇 ...

最新文章

  1. poj2305-Basic remains(进制转换 + 大整数取模)
  2. xcode5 delete provisioning profile
  3. Special Judge Ⅲ(这道题考的就是出栈序列判定_关键代码不差什么)
  4. [Xcode 实际操作]六、媒体与动画-(1)使用图形上下文按一定比例缩放图片
  5. [解决]Win7+Tomcat5.5 只能通过localhost或计算机名访问
  6. 综合LSTM、transformer优势,DeepMind强化学习智能体提高数据效率
  7. 有mysql文件怎么运行不了_MySQL安装常见问题(找不到文件,系统服务无法启动...)...
  8. nginx配置wordprocess访问wp-admin自动加斜杠配置实例
  9. HTML5七夕情人节表白网页制作【唯美满天星3D相册】HTML+CSS+JavaScript
  10. matlab能打开mdl文件吗,simulink打开mdl文件的问题
  11. 明星也爱字体——赵丽颖秀气字体:(江湖少女两版)蓄势待发
  12. google浏览器截取长图
  13. 关键字const有什么含意?
  14. Rs—Ri—部分差Rsf部分
  15. 基于VS2017的C++ SuperLU混合编程
  16. OSChina 周二乱弹 —— 春节假期已经完全结束
  17. 禁用linux系统日志,清除linux系统日志,禁用linux系统日志,删除linux日志
  18. RT-Thread物联网操作系统介绍:6、线程挂起和恢复
  19. VScode受难记 - 0
  20. CSS复仇者联盟立体盒子

热门文章

  1. kodi pvr 不能安装_「保姆级教程」家庭影音多媒体中心第5节—KODI18安装/设置IPTV...
  2. 浪潮n系列服务器指示灯_【科恩电气】通用薄型区域传感器 NA2N系列
  3. java 项目 人力资源项目,基于jsp的人力资源系统-JavaEE实现人力资源系统 - java项目源码...
  4. linux setuid函数_setuid函数解析
  5. java处理请求的流程_Java Spring mvc请求处理流程详解
  6. delphi listview 添加数据 慢_Delphi 二十四岁, Delphi 10.3.1 发布
  7. 在react项目中编写css,更好的在react项目中写css代码--emotion
  8. 某一个接口403 其他接口可以调通_Neo的务实外设指南 篇三十六:一个就够,65W快充+C口混插+最多6个设备 - 飞利浦65W摩天轮插座_插座...
  9. ksu7对讲机调频软件_科普 | 数字对讲机的群呼功能原理是什么?你了解多少?...
  10. 云函数查询_速览 | 京东云5月重要产品与功能更新