①jps:虚拟机进程状况工具

功能:列出正在运行的虚拟机进程,并显示1、虚拟机执行主类名称以及2、这些进程的本地虚拟机唯一ID(LVMID)。

使用频率最高的JDK命令行工具,其他的JDK工具大多需要输入它查询到的LVMID来确定监控的是哪一个虚拟机进程。

对于本地虚拟机进程来说,LVMID与操作系统的进程ID(PID)是一致的,使用Windows的任务管理器也可以查询到虚拟机进程的LVMID,但如过同时启动了多个虚拟机进程,无法根据进程名称定位时,那就只能依赖jps命令显示主类的功能才能区分了

jps命令格式:jps[options][hostid]

jps可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册的主机名。

jps工具主要选项

选项 作用
-q 只输出LVMID,省略主类的名称
-m 输出虚拟机进程启动时传递给主类main()函数的参数
-1 输出主类的全名,如果进程执行的是Jar包,输出Jar路径
-v 输出虚拟机进程启动时JVM参数

②jstat:虚拟机统计信息监视工具

作用:用户监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能的首选工具。

命令格式为:jstat[ option vmid [interval[s|ms] [count] ]]

vmid:如果是本地虚拟机进程,则和LVMID一致,如果是远程虚拟机进程,那VMID的格式应该是:[protocol:][//]lvmid[@hostname[:port]/servername]

intervale和count代表查询间隔和次数,如果省略,说明只查询一次。

option代表着用户希望查询的虚拟机信息,主要分为三类:类加载、垃圾收集、运行期编译状况

③jinfo:java配置信息工具

作用:实时地查看和调整虚拟机各项参数

命令格式:jinfo[option] pid

使用jps的-v参数可以查看虚拟机启动时显示指定的参数列表,但如果想知道未被显示指定的参数的系统默认值,使用jinfo的-flag选项进行查询,还可以使用-flag[+|-] name 修改参数

④jmap:java内存映像工具

功能:用于生成堆转储快照,查询finalize执行队列,java堆和永久代的详细信息。

命令格式:jmap [ option] vmid

选项 作用
-dump 生成Java堆转储快照
-finalizerinfo 显示在F-Queue中等待Finalize执行finalize的对象,Linux/Solaris平台有效
-heap 显示java堆详细信息,Linux/Solaris平台有效
-histo 显示堆中对象统计信息
-permstat 以classLoader为统计口径显示永久代内存状态,Linux/Solaris平台有效
-F 当虚拟机进程对-dump指令没有响应,强制生成快照,Linux/Solaris平台有效

⑤ jhat :虚拟机堆转储快照分析工具

功能:与jmap搭配使用,来分析jmap生成的堆转储快照

⑥jstack:java堆栈跟踪工具

功能:用于生成虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的元婴

命令格式:jstack  [option] vmid

选项 作用
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-l 除堆栈外,显示关于锁的附加信息
-m 如果调用到本地方法的话,可以显示C/C++的堆栈

在JDK1.5中,Thread类提供了一个getAllStackTraces()方法用于获取虚拟机中所有线程的StackTraceElement对象,使用这个方法可以完成jstack的大部分功能。

用这个方法做一个管理员界面,可以随时随地查看线程堆栈

 <body>
<pre>
<%
for(Map.Entry<Thread,StackTraceElement[]> stackTrace:Thread.getAllStackTraces().entrySet()){
Thread thread=(Thread) stackTrace.getKey();
StackTraceElement[] stack=(StackTraceElement[]) stackTrace.getValue();
if(thread.equals(Thread.currentThread())){
continue;
}
out.print("\n线程:"+thread.getName()+"\n");
for(StackTraceElement element:stack){
out.print("\t"+element+"\n"); } } %>
</pre>
</body>

⑦HSDIS:JIT生成代码反汇编

 

虚拟机性能监控与故障处理工具------JDK的命令行工具的更多相关文章

  1. 《深入理解Java虚拟机》虚拟机性能监控与故障处理工具

    上节学习回顾 从课本章节划分,<垃圾收集器>和<内存分配策略>这两篇随笔同属一章节,主要是从理论+实验的手段来讲解JVM的内存处理机制.好让我们对JVM运行机制有一个良好的概念 ...

  2. 《深入理解Java虚拟机》-----第4章 虚拟机性能监控与故障处理工具

    理论总是作为指导实践的工具,能把这些知识应用到实际工作中才是 我们的最终目的. 给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异 ...

  3. 《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具

    虚拟机性能监控与故障处理工具 详解 4.1 概述 本文参考的是周志明的 <深入理解Java虚拟机> 第四章 ,为了整理思路,简单记录一下,方便后期查阅. JDK本身提供了很多方便的JVM性 ...

  4. 【JVM.3】虚拟机性能监控与故障处理工具

    一.概述 经过前面两章对于虚拟机内存分配与回收技术各方面的介绍,相信读者已经建立了一套比较完整的理论基础.理论总是作为指导实践的工具,能把这些执行应用到实际工作中才是我们的最终目的.接下来我们会从实践 ...

  5. 《深入理解 Java 虚拟机》读书笔记:虚拟机性能监控与故障处理工具

    正文 一.JDK 的命令行工具 JDK 的 bin 目录下提供了一些用于监视虚拟机和故障处理的命令行工具. 名称 主要作用 jps JVM Process Status Tool,显示正在运行的虚拟机 ...

  6. JYM虚拟机性能监控与故障处理工具

    虚拟机性能监控与故障处理工具 一.jps:虚拟机进程状况工具 常用指令 二.jstat:虚拟机统计信息监视工具 常用指令 三.jinfo:配置信息工具 四.jmap:Java内存映像工具 常用指令 五 ...

  7. 《深入理解Java虚拟机》之(三、虚拟机性能监控与故障处理工具)

    一.JDK的命令行工具 1.jps:虚拟机进程状况工具 功能:可以列出正在运行的虚拟机进程,并显示虚拟机执行朱磊名称以及这些进程的本地虚拟机唯一ID. 2.jstat:虚拟机统计信息监控工具 Jsta ...

  8. 监控 Linux 系统的 7 个命令行工具

    监控 Linux 系统的 7 个命令行工具: " 深入 关于Linux最棒的一件事之一是你能深入操作系统,来探索它是如何工作的,并寻找机会来微调性能或诊断问题.这里有一些基本的命令行工具,让 ...

  9. JDK的命令行工具系列 (三) jhat、jstack

    jhat: heapdump文件分析工具 在前两篇系列文章JDK的命令行工具系列 (一) jps.jstat.JDK的命令行工具系列 (二) javap.jinfo.jmap中, 我们已经介绍过了jp ...

随机推荐

  1. BIM 相关资料

    BIM 相关资料:http://pan.baidu.com/share/link?shareid=919219072&uk=966240844

  2. phantomjs 中如何使用xpath

    function getNodeInfo(inputcsvPath) { var htmlnodeInfo = page.evaluate(function () { //_Ltg var XPATH ...

  3. nodejs 文件拷贝

    小文件拷贝 我们使用NodeJS内置的fs模块简单实现这个程序如下. var fs = require('fs'); function copy(src, dst) { fs.writeFileSyn ...

  4. Sql 插入自定义主键

    在遇到数据库设计是自增的主键,且需要插入自定义的主键Id时,这个时候如果直接Insert的话,将会发生错误,错误提示信息: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'XXX' ...

  5. uoj#188. 【UR #13】Sanrd(Min_25筛)

    题面 传送门 题解 这是一道语文题 不难看出,题目所求即为\(l\)到\(r\)中每个数的次大质因子 我们考虑\(Min\_25\)筛的过程,设 \[S(n,j)=\sum_{i=1}^nsec_p( ...

  6. GO-time.after 用法

    初学GO,time包里sleep是最常用,今天突然看到一个time.after,特记录time.after用法笔记如下: 首先是time包里的定义 // After waits for the dur ...

  7. 测试开发之前端——No6.HTML5中的键盘事件

    键盘事件 由键盘触发的事件. 适用于所有 HTML 5 元素: 属性 值 描述 onkeydown script 当按下按键时运行脚本 onkeypress script 当按下并松开按键时运行脚本 ...

  8. java多线程快速入门(二)

    通过继承Thread类来实行多线程 package com.cppdy; //通过继承Thread类来实行多线程 class MyThread extends Thread{ @Override pu ...

  9. web----粘包

    一.什么是粘包 所谓粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的. 须知:只有TCP有粘包现象,UDP永远不会粘包 粘包不一定会发生 如果发生了:1.可能是在 ...

  10. DDD领域模型数据访问权限之用户权限(十)

    BAS_PRService岗位和角色服务: public class BAS_PRService { //岗位 private IRepository<BAS_Post> ireposit ...