Java虚拟机内存模型-命令大全

  1. jps: 查看显示虚拟机进程以及进程的配置、环境信息
    jps -h :查看使用帮助
    jps -q :查看PID
    jps -m :查看main函数参数 嵌入式为null
    jps -l :查看mainclass的全名
    jps -v :查看jvm传递参数
    jps -V :隐藏jvm传递参数
  2. 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:查看当前进程的版本
  3. jconsole: jvm动态图形化视图
    线程使用情况展示
    查看线程长时间停顿的问题 1. 等待外部资源【网络、设备、中间件连接】超时等2. 死循环 3. 锁等待
    内存使用情况展示
    对应某个区 如:Eden区 GC日志 如:新生代赋值算法copy 耗时 几次 老年代 标记清除整理 耗时 几次
    类使用情况展示
    对应类的元数据信息的使用情况
    GC活动情况展示
    内存监控和线程监控 均会出现GC日志。
    bin/jsoncole.exe 运行即可。
  4. jhat: 读取内存堆转储 便于分析
    jhat -h :查看帮助使用
    jhat -J-Xmx512M heap.html : 查看堆分析情况
    http://ip:7000/ : 查看heap.html 分析:对象数量、大小、引用、实例
    支持输入OQL语句进行查询分析
  5. 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
  6. 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:查看全部系统属性
  7. 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
  8. 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
  9. 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每三行显示一下标题。
  10. jvisualvm:jvm监控图形化工具 分析运行和堆转储
    安装目录:jvisualvm.exe 运行即可
    需要根据情况进行配置。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值