JVM调优

所谓调优,首先确定追求什么,吞吐量优先还是响应时间优先。

  • 吞吐量:用户代码时间 / (用户代码执行时间 + 垃圾回收时间)
  • 响应时间:STW越短,响应时间越少
什么是调优
  1. 根据需求进行JVM规划和预调优
  2. 优化运行JVM运行环境(慢、卡顿)
  3. 解决JVM运行过程中出现的各种问题
如何调优
  • 系统CPU经常100%
    CPU100%那么一定有线程占用系统资源
    1.找出哪个进程CPU占用高(top)
    2.找出该进程哪个线程CPU高(top -Hp pid)
    3.把线程号转16进制(printf %x tid)
    4.导出该线程的堆栈信息(jstack pid)
    重点关注:WAITING/BLOCKED
    找到线程中waiting on <xx>的都有哪些,找到是哪个线程持有<xx>这把锁

  • 系统内存占比高
    1.导出堆内存(jmap)
    2.分析(jhat jvisualvm mat jprofiler ...)

常用命令
  1. jstat -gc pid 查看进程GC信息
  2. jmap -histo pid| head -20 查看对象占用内存情况
  3. jmap -dump:format=b,file=xxx pid / jmap -histo
    jmap -dump执行期间对进程产生影响很大,何时使用?
    ①可设定HeapDump参数,OOM时自动产生堆转储文件
    ②服务器高可用,停掉这台服务器对其他服务器无影响
  4. 使用MAT / jhat进行dump文件分析
    https://www.cnblogs.com/baihuitestsoftware/articles/6406271.html
分析工具

1.visualvm(测试压测时使用)
2.arthas
3.jprefiler(收费)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • GC和GC Tuning 原作者:马士兵老师http://mashibing.com GC的基础知识 1.什么是垃...
    fat32jin阅读 988评论 0 0
  • 以下是Java自带的性能监控工具 必要时我们需要抓取Java全内存的Dump来分析,抓取方式有如下: | jhat...
    jackcooper阅读 978评论 2 10
  • JVM 调优概述 性能定义 吞吐量 - 指不考虑 GC 引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性...
    裘马轻狂大帅阅读 291评论 0 1
  • JVM 调优概述 性能定义 吞吐量 - 指不考虑 GC 引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性...
    裘马轻狂大帅阅读 277评论 0 1
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,773评论 0 5