JavaJDK中的命令行工具

本文内容主要学习自《深入理解Java虚拟机》,超赞的一本书强烈推荐!

一,常用JDK监控和故障处理工具

命令名称 全称 用途
jstat JVM Statistics Monitoring Tool 用于收集Hotspot虚拟机各方面的运行数据
jps JVM Process Status Tool 显示指定系统内所有的HotSpot虚拟机进程
jinfo Configuration Info for Java 显示虚拟机配置信息
jmap JVM Memory Map 生成虚拟机的内存转储快照,生成heapdump文件
jhat JVM Heap Dump Browser 用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户在浏览器上查看分析结果
jstack JVM Stack Trace 显示虚拟机的线程快照

二,命令使用详解

1, jstat:查看虚拟机各云心状态信息

jstat命令可用于显示本地或远程虚拟机进程中的类装载 ,内存,垃圾收集,JIT编译等运行数据。
jstat命令的格式为:

jstat [options  vmid  [interval[s|ms]]  [count] ]
  • 1

其中若查询的是本地虚拟机进程,VMID与LVMID是一致的,如果是远程虚拟机进程VMID的格式为:
[protocol:][//] lvmind[@hostname [:port] /servername]
可用 jstat -options来查询jstat可以搭配哪些操作选项:
options有:
-class监视类装载,卸载数量,总空间以及类装载所耗费的时间

-gc 监视Java堆状况,包括Eden区,两个survivor区,老年代,永久代的容量,已用空间,GC时间合计等信息

-gccapacity内容与-gc基本相同,但主要输出Java堆各个区域的最大最小空间

-gcutil内容与-gc基本相同,但主要关注已使用空间占总空间的百分比

-gccause内容与-gcutil基本相同,但主要关注已使用空间占总空间的百分比,并输出导致上一次GC的原因

-gcnew监视新生代GC情况

-gcnewcapacity内容与-gcnew基本相同,但主要输出使用到的最大最小空间

-gcold监视老年代GC情况

-gcoldcapacity内容与-gcnew基本相同,但主要输出使用到的最大最小空间

-gcpermcapacity输出永久代使用到的最大最小空间

-complier输出JIT 编译器编译过的方法耗时的信息

-printcompliter输出已经被JIT编译的方法

例如:

其中S0,S1表示Surviver区,E表示新生代Eden区,O表示老年代,YGC表示Young GC,其下面的数字表示GC了多少次,YGCT表示Young GC的耗时,单位为秒,FGC表示Full GC,FGCT表示Full GC的耗时,单位为秒,GCT表示总共的GC时间,为YGCT与FGCT的总和。


2, jps:产看虚拟机进程信息

jps命令可用于查询正在运行的虚拟机进程,同时可选择性的显示虚拟机执行主类,即执行main函数的类,以及进程的本地虚拟机ID(Local Virtual Machine Identifier 简称LVMID)(对于本地虚拟机进程来说,进程的本地虚拟机ID与操作系统的进程ID是一致的)
jps的命令格式为:

jps [options] [hostid]
  • 1

options 有:
-q 只输出本地虚拟机进程ID,省略主类名

-m输出虚拟机进程启动时传递给main()函数的参数

-l输出进程执行的主类的全名

-v输出虚拟机进程启动时的JVM参数

hostid可用于查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册的主机名


3, jinfo:查看虚拟机配置参数信息

jinfo用于查看和调整虚拟机的配置参数.
jinfo的命令格式为:

jinfo  [option] pid
  • 1

我们可以用jinfo -flags来查询线程的参数,其中的Non-default VM flags为虚拟机默认的设置参数,Command line为用户自行设置的参数,如下图:


4, jmap:生成虚拟机内存转储快照

jmap命令用于获取heapdump文件,且可以查询finalize执行队列,Java堆与永久代的一些信息。
jmap的命令格式为:

jmap  [option ]  vmid
  • 1

常用的option选项有:
-dump 生成Java堆转储快照,格式为: -dump:[live , ]format=b , file=,其中live子参数 说明只dump出存活的对象

-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法的对象

-heap 显示Java堆详细信息,如使用哪种回收器,参数配置,分代状况等

例如:


5, jhat:分析虚拟机转储快照信息

jhat命令与jmap命令搭配使用,用于分析jmap生成的堆转储快照,jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。
jhat命令格式:

jhat  heapdumpFileName
  • 1

结合上一步生成的bootstrap.bin文件,可得:

通过访问浏览器http://localhost:7000可得到如下视图:


6, jstack:虚拟机堆栈跟踪

jstack命令用于生成虚拟机当前时刻的线程快照。线程快照指的是当前虚拟机内的每一条线程正在执行的方法堆栈的集合,生成线程快照的作用是,可用于定位线程出现长时间停顿的原因,如线程间死锁,死循环,请求外部资源导致的长时间等待等问题,当线程出现停顿时 就可以用jstack各个线程调用的堆栈情况。
jstack命令格式;

jstack  [option] vmid
  • 1

有以下几个options:

JavaJDK中的命令行工具相关推荐

  1. php 开启命令模式,如何启用PhpStorm中的命令行工具

    本篇文章主要给大家介绍如何使用phpstorm中的命令行工具. PhpStorm下载地址: PhpStorm使用命令行工具,我们可以直接从IDE调用命令!在我们使用任何命令行工具之前,我们必须在设置中 ...

  2. Mac OS X中安装命令行工具Command Line Tools(无Xcode)

    Mac OS X中安装命令行工具Command Line Tools(无Xcode) 简介 喜欢通过终端访问更传统的Unix工具包的Mac用户(大部分是程序员),都会选择安装Xcode IDE的可选命 ...

  3. 在 PHP 中使用命令行工具

    在 Web 应用程序中运行 shell 命令 学习如何更好地集成脚本和命令行工具.本文考察如何使用 shell_exec().exec().passthru() 和 system():安全地将信息传递 ...

  4. ATS中的命令行工具解读

    下面是几个常用命令行工具,先截图,再描述 在生成环境调试的命令 sudo gdb ./traffic_server -p $(pidof traffic_server)  -batch  -x  [m ...

  5. 达内终端端mysql命令_达内推荐:在PHP中使用命令行工具(一)

    如果您使用过 PHP,您就会发现它是创建特性丰富的 Web 页面的出色工具.作为一大脚本语言,PHP:容易学习吗. 有许多强大的框架(比如 CakePHP 和 CodeIgniter),让您能够像 R ...

  6. 在ubuntu中使用命令行工具sqlcmd连接sql server数据库

    步骤: 首先安装sqlcmd工具 注意:如果你连接的用户是 root用户,命令中带有 sudo 的,sudo都可以酌情去掉,不行再加上 1 安装curl软件包: sudo apt install cu ...

  7. C#中的样板命令行工具应用程序

    目录 介绍 概念化这个混乱 处理命令行参数 异常处理 用户界面 过期文件处理 编码此混乱 MSBuild支持 用于在C#中构建命令行工具应用程序的入门代码.该样板代码为应用程序提供异常处理和命令行参数 ...

  8. 构建现代化的命令行工具

    文章源于 lambdas.dev 每当我们想要创建一个基于 NodeJS 的命令行工具时,就会衍生出一堆问题需要解决,比如如何准备开发环境,如何打包转译代码,如何使代码在转译后保持可调用的状态同时尽可 ...

  9. Android命令行工具logcat详细用法!

    logcat是Android中一个命令行工具,可以用于得到程序的log信息. 见板凳详细说明!      本贴内容来自网络,引用网址为:http://hi.baidu.com/%C9%C1%D2%AB ...

最新文章

  1. 云计算物联网Hold住未来十大技术趋势
  2. 《密码与安全新技术专题》第11周作业
  3. Fiddler2介绍
  4. Mixly Aduino 超声波~蜂鸣器
  5. 35岁开发转测试,能度过中年危机吗?
  6. mybatis + spring + PostgreSQL使用中的问题一例
  7. c语言输入奇数n输出一半棱形,c语言输出菱形
  8. THINKPADT400安装XP蓝屏
  9. iDB-数据库自动化运维平台
  10. python列表换行输出_Python从列表转换为字符串时处理换行符
  11. 学习 | 文献通读《基于LDA的游客网络评论主题分类:以故宫为例》
  12. BUAAOJ989 御坂御坂 约瑟夫环
  13. 3种方法保护Word文档不可随意编辑
  14. C#中命名参数和可选参数
  15. java基础系列(四)UTF-8和GBK编码的区别
  16. 毕业三年,一事无成,被迫回老家,一个决定改变一生。
  17. 干货 | 网络安全等级保护安全建设整改的流程、方法
  18. LC激光雷达qy调研
  19. 刘德华任“100年润发”形象代言人
  20. The underlying provider failed on Open

热门文章

  1. 给网游写一个挂吧(四) – 调用游戏函数
  2. 【玩转cocos2d-x之十五】关卡选择的设计
  3. ADO学习(一)基础理论
  4. JS组件系列——表格组件神器:bootstrap table
  5. Git之删除本地无用分支
  6. 深入理解Netty高性能网络框架
  7. 采用Memcached实现分布式Session
  8. 音视频技术开发周刊 | 169
  9. 云游戏之真心话:一切才刚刚开始 | 对话南京大学副教授马展
  10. 新一代搜索引擎项目 ZeroSearch 设计探索