JVM参数命令及工具

1. JVM参数

官网: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

怎么查看有没有启用jvm相关命令呢

jps -l //查看进程
jinfo -flag UseTLAB 16268 

设置JVM

  1. 开发工具,例如idea
  2. java -jar -XX:InitialHeapSize = 100M xx.jar
  3. 比如一些中间件中是可以配置文件的

tomcat、dubbo rocktmq

2. JVM命令

  1. jps -l 查看当前的进程
  2. jinfo 查看某一个参数最基本的用法 ,例如 -flag 参数名 进程。还可以进行修改,例如
jinfo -flag InitialHeapSize=1024*1024*100 16268 

这个修改值有一个前提条件,就是这个参数是可修改的
也就是标记为manageable的参数可以修改
  1. jstack
  2. 排查死锁:

jps -l  //获取程序进程id
jstack 进程数
  1. jmap

查看堆内存

jmp -heap 进程号

会发现当前的Eden、S0、S1的大小不是设定号的比例,-XX:-UseAdaptiveSizePlicy 禁用了也没用,因为jvm中的垃圾回收器会根据当前业务代码的对象大小,动态调整Eden、S0和S1的大小。

如果想自己调整

(1)Eden区大一些,因为有很多对象需要创建

(2)Eden区小一些,因为S区需要更多的空间,没有回收掉,也没有到达

但是你不调整,虚拟机也会自己调优。

jmap -dump:file=heap.hprof 进程号
jhat eap.hprof

会给出一个端口
在游览器上,输入localhost:端口号,就会显示

3. 工具

除了jdk自己带的视图化工具外,还可以用arthas,在生产环境中,可以监视。

通用型工具:

jconsole

jvisualvm

arthas

就是内存基本情况、线程情况、垃圾收集情况都可以看到

3.1. 内存分析的专业工具

  1. MAT ,基于dump下来的问题进行分析 heap.hprof,可以看到哪些对象占用空间比较大、哪些占用空间比较小
  2. 在线访问工具heaphero.io,也就基于dump文件分析
  3. console.perfma.com

3.2. 垃圾收集的专业工具

垃圾收集一定也有日志文件,而且不同的收集器会有不同类型文件

那怎么获取日志文件呢,可以用-XX:-PrintGC打印出日志内容,在线网站

//比如启用G1
-XX:+UseG1GC
//打印日志
-XX:PrintGC
//打印日志详情
-XX:PrintGCDetails
//保存日志在哪里
-Xloggc: D:\gq-gc.log  (文件地址)

3.2.1. gcview.jar
//是一个jar包,可以本地启动
java -jar gcviewer-1.36-SNAPHOT.jar

重点看的是

吞吐量 - Throughput 96.33% 吞吐量越高越好

停顿时间

平均停顿时间 Avg Pause

GC次数:

3.2.2. gceasy.io
3.2.3. 使用docker进行部署 it.gcplot.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值