java性能问题的定位常用方法

今天安装系统版本,经常总是出现了监控到系统内存不足,进程退出,导致服务起不来的问题。本来想修改一下jvm参数,一般都是找到shell脚本,修改xmx值变成原来的一倍。简单处理。后来觉得出现这种内存不足,内存泄漏或者OOM问题的机会本来不多,学会优化和定位性能问题是程序员进阶的必经之路,所以还是找出一些常用的工具,对此问题定位了一番,虽然最后还是通过调大JVM参数搞定的。

常见的性能问题:
内存溢出 OOM (Heap OutOfMemoryError)
内存泄漏
线程死锁
CPU冲高
锁竞争
。。。

在jdk的bin文件中提供了很多性能定位的工具。这里介绍几种常用的工具和命令:

常用的工具

可视化工具

  1. jconsole
    主要用来监控系统的一些性能数据,如CPU、内存以及线程的使用情况。

  2. jvisualvm
    主要用来获取线程dump,或者堆dump的。通过线程pid。

常用命令

1、jps + jstack

jps :
作用:主要是获取当前系统中主要的线程pid
语法: jps

jstack :
作用: 获取指定线程的dump
语法: jstack pid

主要场景: 出现线程死锁问题。通过线程dump可以知道哪几个线程之间存在死锁现象。

2、

jmap + MAT(Memory analyse tool内存分析工具)

作用:获取指定线程的内存dump,可以知道此线程中一些对象或者变量之间的内存使用情况。
命令: jmap -heap pid
也可以直接把内存情况dump到文件中。

dump到文件后,直接放入到MAT工具中进行分析。可以知道哪些对象占据内存过多,然后根据此情况,找到相关的代码进行分析,最后优化代码解决问题。

3、jstat
未完待续。。。

详情请参考:
https://my.oschina.net/feichexia/blog/196575

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值