【JVM与性能调优】与Java性能调优相关的JDK命令行工具大盘点
一、 jps 命令
1.1 jps介绍
jps(JVM Process Status Tool) 列出Java进程,显示指定系统内所有的HotSpot虚拟机进程。
查询Linux系统当前所有java进程pid的命令,并可通过opt来查看这些进程的详细启动参数。
1.1 jps命令格式
jps [options] [hostid]
jps -l -m -v
[options] 选项
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method
-m:输出main method的参数,输出传递给Java进程的参数
-l:输出完全的包名,应用主类名,jar的完全路径名 ,输出主函数的完整路径
-v:输出jvm参数 ,显示传递给jvm的参数
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-Joption:传递参数到vm,例如:-J-Xms512m
31427 sun.tools.jps.Jps -l -m -v -Dapplication.home=/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home -Xms8m
1.2 sudo jps -l
查询Linux系统当前所有java进程pid的命令,并可通过opt来查看这些进程的详细启动参数。
二、top命令
1.2 top命令介绍
top命令是linux系统常用命令之一,能够实时显示系统各个进程的资源占用情况,类似于windows系统的任务管理器。注意:top命令监控的最小单位是进程,如果想监控更小单位时,就需要用到ps或者netstate命令来满足要求。
三、jstack命令
3.1 jstack介绍
jstack用于生成java虚拟机当前时刻的线程快照。jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
sudo jstacksudo jstack 149319sudo jstack 149319 > dmp.stack
- 主要用于打印指定Java进程、核心文件或远程调试服务器的Java线程的Java堆栈跟踪信息。
- 可以生成JVM当前时刻的线程快照。
3.2 线程快照介绍
线程快照是当前JVM内每一条线程正在执行的方法堆栈的集合。
生成线程快照有利于:
- 定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。
3.3 jstack使用过程中注意事项
(1)如何崩溃How和何处崩溃Where
如果java程序崩溃生成core文件,用来获得core文件的java stack和native stack的信息,从而获取程序是如何崩溃How和何处崩溃Where。
(2)指定-J-d64选项
当指定的进程在64位Java虚拟机上运行时,可能需要指定-J-d64选项
- 例如:jstack -J-d64 -m pid。
该命令可能在未来的版本中不可用!!!
(2) 组合grep命令使用
结合 grep搜索命令,实现对dmp文件进行快速查询
487 sudo jps488 sudo jstack 202498 > fm200.stack503 grep '^"' fm200.stack |wc496 grep '^"nio' fm200.stack498 grep '^"GC' fm200.stack499 grep '^"GC' -A 5 fm200.stack500 grep '^"nio' fm200.stack479 sudo jstack 16156 > dmp.stack480 more dmp.stack481 grep '^"' dmp.stack482 grep '^nio"' dmp.stack
四、jstat命令
4.1 jstat命令介绍
jstat(JVM statistics Monitoring)是用于监视虚拟机运行时状态信息的命令
它的功能非常强大 :
- 显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
- 观察Java应用程序运行时信息的工具,查看线程当前状态
- 导出Java应用程序的线程堆栈信息,查看堆信息的详细情况,调用栈,锁等线程栈信息
- 检测死锁
4.2 jstat命令基本使用方法
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
【最常用参数】jstat -gcutil pid:统计gc信息统计。
jstat -class pid:显示加载class的数量,及所占空间等信息。
jstat -compiler pid:显示VM实时编译的数量等信息。
jstat -gcnew pid:new对象的信息。
jstat -gcold pid:old对象的信息。
jstat -gcnewcapacity pid:new对象的信息及其占用量。
jstat -gcoldcapacity pid:old对象的信息及其占用量。
jstat -gcpermcapacity pid: perm对象的信息及其占用量。
jstat -printcompilation pid:当前VM执行的信息。
jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次。
jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。
其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,
PGCMN显示的是最小perm的内存使用量
PGCMX显示的是perm的内存最大使用量
PGC是当前新生成的perm内存占用量
PC是但前perm内存占用量。其他的可以根据这个类推,
OC是old内纯的占用量。
五、jinfo命令
5.1 jinfo命令介绍
查看正在运行的Java应用程序的扩展参数,甚至在运行时修改部分参数
5.2 jinfo命令基本语法
jinfo <option> <pid> 查看运行时参数
在运行时,修改参数值:
jinfo -flag MaxTenuringThreshold 31518 -XX:MaxTenuringThreshold=15
jinfo -flag PrintGCDetails 31518 -XX:-PrintGCDetails
jinfo -flag +PrintGCDetails 31518
jinfo -flag PrintGCDetails 31518 -XX:+PrintGCDetails
六、jmap命令
6.1 jmap命令介绍
jmap(JVM Memory Map)命令用于生成heap dump文件(生成堆快照文件),如果不使用这个命令,还阔以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候·自动生成dump文件。jmap不仅能生成dump文件,还阔以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等。
6.2 jmap命令使用
> jmap -dump:format=b,file=heap.hprof 31531
Dumping heap to /Users/caojie/heap.hprof ...
Heap dump file created
获得堆快照文件之后,可使用多种工具对文件进行分析,例如jhat,VisualVM等。
试试用jconsole或者VisualVM监控另一个jvm的状态。
用profiling工具寻找程序中慢的地方。Eclipse有profiling工具。VisualVM也有这样的功能。
(如果不介意使用闭源软件的话,也试试JProfiler和YourKit)
七、jhat命令
7.1 jhat命令介绍
jhat(JVM Heap Analysis Tool)命令是与jmap搭配使用,用来分析jmap生成的dump(分析Java应用程序的堆快照文件),jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看。在此要注意,一般不会直接在服务器上进行分析,因为jhat是一个耗时并且耗费硬件资源的过程,一般把服务器生成的dump文件复制到本地或其他机器上进行分析。
7.2 jhat命令的使用
使用命令如下:
> jhat heap.hprof
Reading from heap.hprof...
Dump file created Tue Nov 11 06:02:05 CST 2014
Snapshot read, resolving...
Resolving 8781 objects...
Chasing references, expect 1 dots.
Eliminating duplicate references.
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
jhat在分析完成之后,使用HTTP服务器展示其分析结果.
在浏览器中访问http://127.0.0.1:7000/
即可得到分析结果。
八、jstatd命令
一个RMI服务器程序
作用相当于代理服务器
建立本地计算机与远程监控工具的通信
jstatd服务器能够将本机的Java应用程序信息传递到远程计算机,由于需要多台计算机做演示,此处略。
【JVM与性能调优】与Java性能调优相关的JDK命令行工具大盘点相关推荐
- Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控
Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控 2-1 JVM的参数类型 标准参数 x参数 XX参数 2-2 查看JVM运行时参数 2-3 jstat查看JVM统计信息 2- ...
- JVM性能监控工具(一)-jdk命令行工具
转载:http://blog.csdn.net/top_code/article/details/51456186 当系统出bug需要定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处 ...
- java命令行选项6_6.jdk命令行工具
名称 主要功能 jps JVM Process Status Tool,显示指定系统内所有HotSpot虚拟机进程 jstat JVM Statistics Minitoring Tool,用于收集H ...
- java性能调试命令_性能测试必备监控技能jvm之jdk命令行工具篇16
3.png 前言 对于JVM的性能监控,主要注意以下关键参数,通过jdk自带的命令行工具,即可查看相关参数,从而分析系统或目标服务程序中存在的性能瓶颈 jps JVM Process Status T ...
- Java基础JDK命令行工具(jps,jstat,jinfo,jmap,jhat,jstack)
本篇博文目录: 前言 1.Java的JDK工具 2.jps (JVM Process Status)工具 3.jstat(JVM Statistics Monitoring Tool) 4.jinfo ...
- 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能...
虚拟机系列文章 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析 深入理解 Java 虚拟机-如何利用 Visual ...
- 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:打卡活动第二期来啦,100% 能获得奖品个人原创+1博客:点击前往,查看更多 虚拟机系列文章 深入理解 Java ...
- Java虚拟机学习(8):查看JVM参数及值的命令行工具
查看JVM各个参数值方式 1. HotSpot vm中的各个globals.hpp文件 查看jvm初始的默认值及参数 globals.hpp globals_extension.hpp c1_glo ...
- Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件
1.Java内存泄露和内存溢出对比 1.1 Java 内存泄露 内存泄露是指一个不再被程序使用的对象或变量还在内存中占用空间. 1.1.1判断内存空间是否符合垃圾回收的标准 在Java语言中,判断一个 ...
最新文章
- 云计算设计模式(十)——守门员模式
- fifo的rdata_同步FIFO设计
- 每天一道LeetCode-----链表插入排序
- Deepin Linux 设置开机自动进入命令行模式
- duts 数据集_IEC61850测试概述
- 希捷ST31000528AS Disk Boot Failure, Insert System Disk and Press Enter和飞利浦的193ei显示器亮的问题
- 如何检查浏览器存储中个人证书的存在
- 赚钱方式决定你的财富自由之路
- win7计算机任务栏过长,win7任务栏终极技巧解说
- android 加速度计,Android加速度计校准?
- win7计算机里没有网络图标,Win7网络图标不见了怎么办?Win7系统找回网络图标的方法...
- 如何让novnc/websockify支持tls1.2 (by quqi99)
- docx4j生成Word添加页眉页脚水印 页眉页脚奇偶显示首页显示
- 手机 查看java源码_pin.java 源代码在线查看 - 一个专门为手机写的程序 资源下载 虫虫电子下载站...
- 期指交易中CPPI和海龟交易法则的资金管理方法比较
- 系统学习NLP(七)--词语相似度
- hadoop与java中数据类型转换
- Camstar 协助工具
- oh-my-zsh配置
- 滤波器方法(贝叶斯/EKF/UKF/ESKF/MSCKF)
热门文章
- SQL内连接,左连接,右连接区别及联系
- 脑肿瘤分割学习(五):A Robust Volumetric Transformer for Accurate 3D Tumor Segmentation
- 4-20ma转4-20ma 0-5v转0-5v 模拟信号隔离变送器
- 用小米路由搭建外网可访问的个人网站
- python文件名和类名需要一致吗_类名和文件名
- Xgboost回归四种调参方法及Python简单实现
- android 端口开启,高通手机打开DIAG端口 开启端口指令
- AI-ISP:手机相机是如何将风景变成图片的?
- gif透明背景动画_火柴人动画制作软件下载_火柴人动画制作软件最新电脑版下载...
- jdbc步骤java_jdbc连接数据库的5个步骤