JVM:实战

参数

标准参数:不会随着JDK版本的变化而变化

java -version/-help

-X参数:

非标准参数:随着JDK版本变化而变化

  • Xint:解释执行
  • Xcomp:编译执行
  • Xmix:混合执行

-XX参数

boolean类型

-XX:[+/-]name:启动或停止
-XX: +UseSerialGC

非boolean类型

-XX:name=value
-XX:MaxHeapSize=100M

其他参数(等同于-XX参数)

-Xms100M ===> -XX:InitialHeapSize=100M
-Xmx100M ===> -XX:MaxHeapSize=100M
-Xss100k ===> -XX:ThreadStackSize=100k

查看所有的参数

-XX:+PrintFlagsFinal

使用命令

  • idea/ecplipse
  • java -XX:+UseG1GC xxx.jar
  • 实时修改 jinfo

常用参数

命令

  • jps:查看当前java进程状态。java process status。
  • jinfo:查看或修改JVM参数。jinfo -flag UseG1GC PID
    实时修改值:jinfo -flag name=value PID(只有manageble参数才可以被修改)
  • jstat:jstat -class/-gc PID 时间 次数。
  • jstack:jstack PID,打印出PID进程中线程的情况,用来排查线程问题。
  • jmap:生成堆内存的快照 jmap -heap PID;jmap -dump:format=b,file=heap.hprof PID

工具

  • jconsole
  • jvisualvm

调优的维度

OOM,排查哪个对象占用的内存空间比较大

垃圾回收

MA Memory Analyzer:打开heap.hprof文件

查看线程上下文切换状态

vmstat可以查看上下文切换的次数
Lmbench3可以查看上下文切换的市场

posted @ 2020-07-21 23:36  挣扎一下  阅读(167)  评论(0编辑  收藏  举报