hprof文件分析工具_JVM线上常用参数、常用工具以及异常排查

091188f5bb4656e95df21f5b47d4ecb6.png

数据区设置

Xms:初始堆大小

Xmx:最大堆大小

Xss:Java 每个线程的Stack大小

XX:NewSize=n:设置年轻代大小

XX:NewRatio=n:设置年轻代和年老代的比值。如:为 3,表示年轻代与年老代比值为 1:3,年轻代占整个年轻代年老代和的 1/4。

XX:SurvivorRatio=n:年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor区有两个。如:3,表示 Eden:Survivor=3:2,一个 Survivor 区占整个年轻代的 1/5。

XX:MaxPermSize=n:设置持久代大小。

收集器设置

XX:+UseSerialGC:设置串行收集器

XX:+UseParallelGC::设置并行收集器

XX:+UseParalledlOldGC:设置并行年老代收集器

XX:+UseConcMarkSweepGC:设置并发收集器

XX:+UseG1GC:G1收集器,Java9默认开启,无需设置

JVM 提供的常用工具

1、jps:用来显示本地的 Java 进程,可以查看本地运行着几个 Java 程序,并显示他们的进程号。

命令格式:jps

2、jinfo:运行环境参数:Java System 属性和 JVM 命令行参数,Java class path 等信息。

命令格式:jinfo 进程 pid

3、jstat:监视虚拟机各种运行状态信息的命令行工具。

命令格式:jstat -gc 123 250 20

4、jstack:可以观察到 JVM 中当前所有线程的运行情况和线程当前状态。

命令格式:jstack 进程 pid

5、jmap:观察运行中的 JVM 物理内存的占用情况(如:产生哪些对象,及其数量)。

命令格式:jmap [option] pid

-dump:[live,]format=b,file= 使用hprof二进制形式,输出jvm的heap内容到文件, live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.

-finalizerinfo 打印正等候回收的对象的信息.

-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.

-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.

-permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.

使用示例:jmap -heap 27900 # 展示pid的整体堆信息如下:

9e78d835226a86dcf9fc136eff5847d8.png

异常排查

CPU 资源占用过高

1、top 查看当前 CPU 情况,找到占用 CPU 过高的进程 PID=123。

2、top -H -p123 找出两个 CPU 占用较高的线程,记录下来 PID=2345, 3456 转换为十六进制。

3、jstack -l 123 > temp.txt 打印出当前进程的线程栈。

4、查找到对应于第二步的两个线程运行栈,分析代码。

OOM 异常排查

1、使用 top 指令查询服务器系统状态。

2、ps -aux|grep java 找出当前 Java 进程的 PID。

3、jstat -gcutil pid interval 查看当前 GC 的状态。

4、jmap -histo:live pid 可用统计存活对象的分布情况,从高到低查看占据内存最多的对象。

5、jmap -dump:format=b,file= 文件名 [pid] 利用 Jmap dump。

6、使用性能分析工具对上一步 dump 出来的文件进行分析,工具有 MAT 等。

-----------------------------

最后,我自己是一名从事了多年开发的JAVA老程序员,辞职目前在做自己的java私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的java学习干货,可以送给每一位喜欢java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:java,即可免费获取。

82d0a99168bad43401090a2744eb23e7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值