JVM_10_JDK命令行工具
Sun JDK工具
名称 |
主要作用 |
jps |
显示指定系统内所有的HotSpot虚拟机进程(Java程序 进程号) |
jstack |
用于收集HotSpot虚拟机各方面的运行数据 |
jinfo |
显示虚拟机配置信息 |
jmap |
生成虚拟机的内存存储快照 |
jhat |
用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户在浏览器上查看分析结果 |
jstack |
显示虚拟机的线程快照 |
jps:虚拟机进程状况工具
jps |
列出正在运行的程序的主类函数名和进程号 |
jps -q |
列出正在运行的进程号 |
jps -m |
输出进程启动时传递给主类mian()函数的 参数 |
jps -v |
输出虚拟机进程启动时JVM参数 |
jps -l |
输出主类的全类名,如果进程执行的是jar包,输出jar包路径 |
jstat:虚拟机统计信息系统
-class |
监视装载类,卸载空间,总空间以及类装载所耗费的时间 |
-gc |
监视Java堆状况(Eden区/survivor区/年老代/永久代等的容量,已用空间,GC时间合计) |
-gccapacity |
监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大,最小空间 |
-gcutil |
监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
-gccause |
与-gcutil功能一样,但是会额外输出"导致上一次GC产生的原因" |
-gcnew |
监视新生代GC状况 |
-gcnewcapacity |
监视内容与-gcnew基本相同,输出主要关注使用到的最大,最小空间 |
-gcold |
监视年老代GC状况 |
-gcoldcapacity |
监视内容与-gcold基本相同,输出主要关注使用到的最大,最小空间 |
-gcpermcapacity |
输出永久代使用到的最大,最小空间 |
-compiler |
输出JIT编译器编译过得方法,耗时等信息 |
-printcompilation |
输出已经被JIT编译的方法 |
jstat -gc 进程号 毫秒数 查询次数
举个栗子:
jstat -gc 2619 250 30
每250毫秒查询一次,进程2619垃圾收集情况,一共查询20次
如果毫秒数 和 查询次数不输,就代表只查询一次
jstat -gc 2619
S0C |
Survivor0、年轻代中第一个survivor的容量 |
S1C |
Survivor1、年轻代中第二个survivor的容量 |
S0U |
年轻代中第一个survivor目前已使用的空间 |
S1U |
年轻代中第二个survivor目前已使用的空间 |
EC |
年轻代中Eden的容量 |
EU |
年轻代中Eden目前已使用的空间 |
OC |
年老代容量 |
OU |
年老代已经使用的空间 |
MC |
方法区大小 |
MU |
方法区已使用大小 |
CCSC |
压缩类空间大小 |
CCSU |
压缩类空间已使用大小 |
YGC |
年轻代中GC的次数 |
YGCT |
年轻代中GC消耗的时间 |
FGC |
年老代GC的次数 |
FGCT |
年老代GC消耗的时间 |
GCT |
GC消耗总时间 |
jinfo:Java配置信息工具
jinfo的作用是实时的查看和调整虚拟机各项参数。
举个栗子:
jinfo 2564
输出结果:
(FUDE-1.0.0@AS6U3.amd64)[root@CS22752 ~]# jinfo 2564 Attaching to process ID 2564, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.60-b23 Java System Properties: java.runtime.name = Java(TM) SE Runtime Environment java.vm.version = 25.60-b23 sun.boot.library.path = /opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/amd64 java.vendor.url = http://java.oracle.com/ java.vm.vendor = Oracle Corporation path.separator = : file.encoding.pkg = sun.io java.vm.name = Java HotSpot(TM) 64-Bit Server VM sun.os.patch.level = unknown sun.java.launcher = SUN_STANDARD user.country = US user.dir = /home/stars/TaskMaster/bin java.vm.specification.name = Java Virtual Machine Specification java.runtime.version = 1.8.0_60-b27 java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment os.arch = amd64 java.endorsed.dirs = /opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/endorsed java.io.tmpdir = /tmp line.separator = java.vm.specification.vendor = Oracle Corporation os.name = Linux sun.jnu.encoding = UTF-8 java.library.path = /opt/FUDE-1.0/fude/lib:/opt/FUDE-1.0/utils/lib:/opt/FUDE-1.0/log/lib:/opt/FUDE-1.0/netsnmp/lib:/opt/FUDE-1.0/omni/lib:/opt/FUDE-1.0/python/lib:/opt/FUDE-1.0/boost/lib:/opt/FUDE-1.0/cppunit/lib:/opt/FUDE-1.0/TAO/ACE_wrappers/lib::/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib java.specification.name = Java Platform API Specification java.class.version = 52.0 sun.management.compiler = HotSpot 64-Bit Tiered Compilers os.version = 2.6.32-279.el6.x86_64 user.home = /root user.timezone = Asia/Shanghai java.awt.printerjob = sun.print.PSPrinterJob file.encoding = UTF-8 java.specification.version = 1.8 user.name = root java.class.path = ../lib/dom4j-1.6.1.jar:../lib/jackson-annotations-2.2.3.jar:../lib/postgresql-9.3-1102.jdbc4.jar:../lib/commons-collections-3.2.1.jar:../lib/jackson-core-asl-1.9.13.jar:../lib/licclient.jar:../lib/json-lib-2.2.3-jdk15.jar:../lib/RuleCenterServerAPI-0.9.1.jar:../lib/commons-lang-2.4.jar:../lib/ezmorph-1.0.4.jar:../lib/proxy-server-client-1.1.0.jar:../lib/jackson-jaxrs-1.9.13.jar:../lib/jackson-mapper-asl-1.9.13.jar:../lib/jackson-xc-1.9.13.jar:../lib/RBSPAdapter2.jar:../lib/mongo-2.9.1.jar:../lib/jdom.jar:../lib/jackson-core-2.2.3.jar:../lib/taskcenter.jar:../lib/commons-beanutils-1.8.2.jar:../lib/PCI2.jar:../lib/commons-io-1.4.jar:../lib/ojdbc6.jar:../lib/slf4j-api-1.6.1.jar:../lib/zookeeper-3.4.5.jar:../lib/cxfClient.jar:../lib/commons-logging-1.1.1.jar:../lib/libthrift-0.7.0.jar:../lib/slf4j-log4j12-1.6.6.jar:../lib/whois_client_2.3.0_jre1.6.jar:../lib/log4j-1.2.15.jar:../lib/jackson-databind-2.2.3.jar:../lib/starskeeper-1.1.1.jar:../lib/axis2lib/axiom-dom-1.2.13.jar:../lib/axis2lib/axis2-transport-http-1.6.2.jar:../lib/axis2lib/jibx-bind-1.2.jar:../lib/axis2lib/axis2-ant-plugin-1.6.2.jar:../lib/axis2lib/commons-httpclient-3.1.jar:../lib/axis2lib/httpcore-4.0.jar:../lib/axis2lib/commons-codec-1.3.jar:../lib/axis2lib/regexp-1.2.jar:../lib/axis2lib/commons-fileupload-1.2.jar:../lib/axis2lib/bcel-5.1.jar:../lib/axis2lib/jibx-run-1.2.jar:../lib/axis2lib/geronimo-stax-api_1.0_spec-1.0.1.jar:../lib/axis2lib/axis2-soapmonitor-servlet-1.6.2.jar:../lib/axis2lib/axis2-java2wsdl-1.6.2.jar:../lib/axis2lib/axis2-corba-1.6.2.jar:../lib/axis2lib/geronimo-ws-metadata_2.0_spec-1.1.2.jar:../lib/axis2lib/jalopy-1.5rc3.jar:../lib/axis2lib/jaxb-api-2.1.jar:../lib/axis2lib/xmlbeans-2.3.0.jar:../lib/axis2lib/wstx-asl-3.2.9.jar:../lib/axis2lib/axis2-json-1.6.2.jar:../lib/axis2lib/axiom-impl-1.2.13.jar:../lib/axis2lib/axis2-clustering-1.6.2.jar:../lib/axis2lib/woden-api-1.0M9.jar:../lib/axis2lib/geronimo-saaj_1.3_spec-1.0.1.jar:../lib/axis2lib/geronimo-jta_1.1_spec-1.1.jar:../lib/axis2lib/apache-mime4j-core-0.7.2.jar:../lib/axis2lib/mail-1.4.jar:../lib/axis2lib/mex-1.6.2-impl.jar:../lib/axis2lib/axis2-fastinfoset-1.6.2.jar:../lib/axis2lib/jaxws-tools-2.1.3.jar:../lib/axis2lib/tribes-6.0.16.jar:../lib/axis2lib/axis2-xmlbeans-1.6.2.jar:../lib/axis2lib/geronimo-jaxws_2.2_spec-1.0.jar:../lib/axis2lib/axis2-jaxbri-1.6.2.jar:../lib/axis2lib/axis2-saaj-1.6.2.jar:../lib/axis2lib/antlr-2.7.7.jar:../lib/axis2lib/axis2-jaxws-1.6.2.jar:../lib/axis2lib/axis2-jibx-1.6.2.jar:../lib/axis2lib/neethi-3.0.2.jar:../lib/axis2lib/commons-io-1.4.jar:../lib/axis2lib/axis2-metadata-1.6.2.jar:../lib/axis2lib/xml-resolver-1.2.jar:../lib/axis2lib/XmlSchema-1.4.7.jar:../lib/axis2lib/axiom-api-1.2.13.jar:../lib/axis2lib/activation-1.1.jar:../lib/axis2lib/commons-logging-1.1.1.jar:../lib/axis2lib/woden-impl-dom-1.0M9.jar:../lib/axis2lib/axis2-adb-codegen-1.6.2.jar:../lib/axis2lib/axis2-adb-1.6.2.jar:../lib/axis2lib/xalan-2.7.0.jar:../lib/axis2lib/commons-cli-1.2.jar:../lib/axis2lib/jettison-1.0-RC2.jar:../lib/axis2lib/woden-impl-commons-1.0M9.jar:../lib/axis2lib/jaxb-impl-2.1.7.jar:../lib/axis2lib/axis2-transport-local-1.6.2.jar:../lib/axis2lib/log4j-1.2.15.jar:../lib/axis2lib/axis2-codegen-1.6.2.jar:../lib/axis2lib/axis2-kernel-1.6.2.jar:../lib/axis2lib/jaxb-xjc-2.1.7.jar:../lib/axis2lib/axis2-spring-1.6.2.jar:../lib/axis2lib/wsdl4j-1.6.2.jar:../lib/axis2lib/axis2-mtompolicy-1.6.2.jar:../lib/axis2lib/geronimo-annotation_1.0_spec-1.1.jar:../lib/axis2lib/jaxen-1.1.1.jar:../lib/axis2lib/jsr311-api-1.0.jar:../lib/axis2lib/juli-6.0.16.jar:../lib/redis/messageservice.jar:../lib/redis/jedis-2.6.2.jar:../lib/redis/commons-pool2-2.3.jar:../bin/*:../conf java.vm.specification.version = 1.8 sun.arch.data.model = 64 sun.java.command = com.taskcenter.taskmaster.TaskMaster java.home = /opt/FUDE-1.0/java/jdk1.8.0_60/jre user.language = en java.specification.vendor = Oracle Corporation awt.toolkit = sun.awt.X11.XToolkit java.vm.info = mixed mode java.version = 1.8.0_60 java.ext.dirs = /opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/ext:/usr/java/packages/lib/ext sun.boot.class.path = /opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/resources.jar:/opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/rt.jar:/opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/sunrsasign.jar:/opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/jsse.jar:/opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/jce.jar:/opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/charsets.jar:/opt/FUDE-1.0/java/jdk1.8.0_60/jre/lib/jfr.jar:/opt/FUDE-1.0/java/jdk1.8.0_60/jre/classes java.vendor = Oracle Corporation file.separator = / java.vendor.url.bug = http://bugreport.sun.com/bugreport/ sun.io.unicode.encoding = UnicodeLittle sun.cpu.endian = little sun.cpu.isalist = VM Flags: Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=1073741824 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=357564416 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=357564416 -XX:OldSize=716177408 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC Command line: -Dfile.encoding=UTF-8 -Xms1024m -Xmx1024m |
仔细看看,输出了虚拟机信息,程序启动地址,程序主类,jdk信息,启动时加载的jar包等等...
jmap:Java内存映象工具
-dump |
生成Java堆转存储快照。格式:-dump[:live] format=b,file=filepath+filename pid 其中live为选填(说明是否只dump出存活的对象) |
-finalizeinfo |
显示在F-Queue中等待Finalizer线程执行finalize方法的对象。(windows下无效) |
-heap |
显示Java堆详细信息,如使用哪种回收器,参数配置,分代情况等(windows下无效) |
-histo |
显示堆中对象统计信息,包括类,实例数量,合计容量 |
-permstat |
已ClassLoader为统计口径显示永久代内存状态(windows下无效) |
-F |
当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照(windows下无效) |
jmap命令用于生成堆 转 存储快照。
jmap的作用不仅仅是为了获取dump文件,它还可以查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率,当前用的是哪种搜集器等。
下面我们来举个栗子...
jmap -dump:format=b,file=/home/yxcheng/2619.hprof 2619
然后在指定目录下就生成了 .hprof 文件
下载下来,使用MemoryAnalyzer打开...就可以进行愉快的分析了...
jhat:虚拟机堆转存储快照分析工具
Sun JDK提供jhat命令与jmap搭配使用,用来分析jmap生成的堆转存储快照。
jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。
不过这个显示的结果很挫....
举个栗子:
利用之前我们使用jmap生成的2619.hprof文件。
当出现Server is ready 字样的时候,在浏览器上输入 服务器IP:7000即可,比如像这样子:
不得不说,真的很挫呀...
jstack:Java堆栈跟踪工具
jstack命名用于生成虚拟机当前时刻的线程快照(一般为threaddump或者javacore文件)
线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合。
生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁,死循环,请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。
线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者等待着什么资源。
-F |
当正常输出的请求不被响应时,强制输出线程堆栈 |
-l |
除堆栈外,显示关于锁的附加信息 |
-m |
如果调用到本地方法的话,可以显示C/C++的堆栈 |
举个栗子:
jstack -l 进程号
JVM_10_JDK命令行工具相关推荐
- Redis 笔记(16)— info 指令和命令行工具(查看内存、状态、客户端连接数、监控服务器、扫描大key、采样服务器、执行批量命令等)
Info 命令返回关于 Redis 服务器的各种信息和统计数值.通过给定可选的参数 section ,可以让命令只返回某一部分的信息. 1. 显示模块 server : 一般 Redis 服务器信息, ...
- ATS中的命令行工具解读
下面是几个常用命令行工具,先截图,再描述 在生成环境调试的命令 sudo gdb ./traffic_server -p $(pidof traffic_server) -batch -x [m ...
- 在vc6控制台程序中如何调用运行ImageMagick命令行工具
在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...
- 如何运行ImageMagick的命令行工具
在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...
- 构建现代化的命令行工具
文章源于 lambdas.dev 每当我们想要创建一个基于 NodeJS 的命令行工具时,就会衍生出一堆问题需要解决,比如如何准备开发环境,如何打包转译代码,如何使代码在转译后保持可调用的状态同时尽可 ...
- WinCE中命令行工具Viewbin简介(查看nk.bin中包含的文件)
Viewbin是微软提供的一个命令行工具,在WinCE5.0和WinCE6.0中,可以在"/WINCE600/PUBLIC/COMMON/OAK/BIN/I386"找到他.View ...
- 懒人神器 !一个创意十足的 Python 命令行工具
作者 | 写代码的明哥 来源 | Python编程时光 当听到某些人说 xx 库非常好用的时候,我们总是忍不住想要去亲自试试. 有一些库,之所以好用,是对一些库做了更高级的封闭,你装了这个库,就会附带 ...
- GitHub日收12000星,微软新命令行工具引爆程序员圈!
作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 继上次微软开源计算器刷爆GitHub后,今天凌晨在微软Build大会登场的Windows Terminal,如旋风般目前已登顶GitHu ...
- 一天1300 Star量,GitHub上新官方命令行工具
机器之心 机器之心编辑部 不想用命令行操作 GitHub 的开发者,不是好的开发者. Git简介 小编私以为,Git 是世界上最好的代码版本控制工具,木有之一.在做项目的时候,通常我们会在本地写代码, ...
最新文章
- python 问题不符合dcp rule_约束不遵循CVXPY中的DCP规则
- Windows 服务器开机自启动
- Tree Recovery--POJ 2255
- 安妮宝贝的50句经典语句
- 区块链面试过程中的40个问题
- 数据结构常见算法集锦
- 把strassen乘法调出来了...
- Vue2.0 全家桶开发的网页应用(参照吾记APP)
- 分页插件--根据Bootstrap Paginator改写的js插件
- tensorrt轻松部署高性能dnn推理_基于TensorRT车辆实时推理优化
- androidfiletransfer_mac手机助手(Android File Transfer)下载_mac手机助手(Android File Transfer)官方下载...
- 关于HTTPOXY漏洞的分析说明
- Docker快速入门-腾讯云
- 运营Tumblr的几个建议-教你成为tumblr达人
- Linux 内存管理 | 虚拟内存管理:虚拟内存空间、虚拟内存分配
- Mac 快速查找快捷键command+f失效解决办法
- 魔霸新锐2021版不接显示器开启独显的方式
- 解决华为笔记本安装驱动后浏览器频闪
- 【大疆无人机OnboardSDK(三)妙算ssh远程控制台系统搭建】
- 特效笔记2--unity粒子系统的基本认识