Java虚拟机内存模型-命令大全
作者:互联网
- jps: 查看显示虚拟机进程以及进程的配置、环境信息
jps -h :查看使用帮助
jps -q :查看PID
jps -m :查看main函数参数 嵌入式为null
jps -l :查看mainclass的全名
jps -v :查看jvm传递参数
jps -V :隐藏jvm传递参数 - jcmd: 打印java进程中的线程信息 虚拟机信息 基本类信息
jcmd -l : 查看当前机器所有jvm进程列表
jcmd -f file:从文件file中读取命令,然后在目标Java进程上调用这些命令
jcmd -h : 查看帮助信息
jcmd PID PerfCounter.print : 查看指定进程的性能统计信息是什么?
jcmd PID help: 列出当前java进程可执行的操作有哪些?
jcmd PID help JFR.dump :查看当前命令操作选项是什么?
jcmd PID DB.start : 启动DB
jcmd PID VM.uptime : 查看VM启动时长
jcmd PID GC.class_histogram:查看系统类统计信息
jcmd PID Thread.print : 查看线程堆栈信息
jcmd PID GC.heap_dump FILE_NAME : 查看 JVM 的Heap Dump
jcmd PID VM.system_properties :查看JVM属性设置
jcmd PID VM.flags : 查看JVM的启动参数
jcmd PID VM.command_line:查看JVM的启动命令行
jcmd PID GC.run_finalization:对 JVM 执行 java.lang.System.runFinalization()
jcmd PID GC.run : 对 JVM 执行 java.lang.System.gc() 【什么时候GC 视情况而定】
jcmd PID PerfCounter.print :查看jvm相关性能参数
jcmd PID VM.version:查看当前进程的版本 - jconsole: jvm动态图形化视图
线程使用情况展示
查看线程长时间停顿的问题 1. 等待外部资源【网络、设备、中间件连接】超时等2. 死循环 3. 锁等待
内存使用情况展示
对应某个区 如:Eden区 GC日志 如:新生代赋值算法copy 耗时 几次 老年代 标记清除整理 耗时 几次
类使用情况展示
对应类的元数据信息的使用情况
GC活动情况展示
内存监控和线程监控 均会出现GC日志。
bin/jsoncole.exe 运行即可。 - jhat: 读取内存堆转储 便于分析
jhat -h :查看帮助使用
jhat -J-Xmx512M heap.html : 查看堆分析情况
http://ip:7000/ : 查看heap.html 分析:对象数量、大小、引用、实例
支持输入OQL语句进行查询分析 - jmap: 堆转储信息查看 Jvm内存使用情况查看
jmap -h :查看使用帮助
jmap -J-d64 -heap pid : 查看当前线程的堆中的对象使用情况
jmap -dump:live,format=b,file=xxx.txt PID:使用hprof二进制形式,输出jvm的heap内容的存活的对象信息到文件
jmap -dump:format=b,file=outfile PID 配合MAT(内存分析工具)
jmap -finalizerinfo PID :查看当前线程等待回收的对象
jmap -heap PID :打印heap的概要信息,GC使用的算法,heap(堆)的配置及JVM堆内存的使用情况.
jmap -histo:live PID | less :打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
jmap -histo PID>A.log日志将其保存,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。
jmap -permstat PID: 查看类加载和持久层的信息:类加载器名字,活动状态,引用地址,父类加载器和加载的类的数量以及字符串的数量和占用内存数.
jmap -F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.
jmap -J-Xmx512M 传递参数jvm - jinfo:系统属性查看以及设置
jinfo pid: 查看当前jvm进程的全部参数和系统属性
jinfo -flag name pid :查看pid的参数
jinfo -flag [+|-]name pid :动态开启或者关闭对应名称的参数 不用重启jvm
jinfo -flag name=value pid:修改指定参数的值
jinfo -flags pid:查看全部参数
jinfo -sysprops pid:查看全部系统属性 - jstack: java进程栈信息转储 查看
jstack -h :查看帮助
jstack pid : 查看线程运行情况
jstack -l PID : 查看输出、监看死锁等
jstack -l PID | grep ‘java.lang.Thread.State’ | wc -l : 统计当前进程的线程数
jstack 检测CPU占用过高的程序
1. top
2. top -H -p 11342 查看当前进程中cpu占用高线程 --18889
3. printf “%x\n” 18889 :转换线程ID --12b7
4. jstack 11342|grep 12b7 -A 40 : 定位CPU高的程序
jstack pid : thread dump - thread dump:
kill -3 pid :查看线程运行情况
kill -9 pid :强制杀死进程
pkill -kill -t terminal1(按终端踢,terminal1为所踢用户的终端)
pkill -u haha(按用户名踢,haha为用户名)
死锁,Deadlock(重点关注)
等待资源,Waiting on condition(重点关注)
等待获取监视器,Waiting on monitor entry(重点关注)
阻塞,Blocked(重点关注)
执行中,Runnable
暂停,Suspended
对象等待中,Object.wait() 或 TIMED_WAITING
停止,Parked - jstat: 查看GC信息和 类装载信息查看
jstat -h :查看帮助
jstat -gcutil 11342 100 10 :通知jvm在控制台打印PID为11342的gc情况,每间隔100毫秒打印一次,打印10次。
jstat -class pid:显示加载class的数量,及所占空间等信息。
jstat -compiler pid:显示VM实时编译的数量等信息。
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内纯的占用量。
jstat -gcnew pid:new对象的信息。
jstat -gcnewcapacity pid:new对象的信息及其占用量。
jstat -gcold pid:old对象的信息。
jstat -gcoldcapacity pid:old对象的信息及其占用量。
jstat -gcpermcapacity pid: perm对象的信息及其占用量。
jstat -util pid :统计gc信息统计。
jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。 - jvisualvm:jvm监控图形化工具 分析运行和堆转储
安装目录:jvisualvm.exe 运行即可
需要根据情况进行配置。
标签:Java,查看,PID,虚拟机,pid,jcmd,线程,内存,jstat 来源: https://blog.csdn.net/u014586894/article/details/104859888