栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM调优-入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM调优-入门

JVM调优-入门

文章目录
  • JVM调优-入门
  • 前言
  • 常用的垃圾收集器组合参数
  • JVM常用的命令行参数
  • GC日志格式
  • 调优
    • 目标
    • 规划开始
    • 运行环境优化
    • 解决JVM运行过程中问题
      • 常见问题解决步骤
      • arthas
      • 场景案列分析


前言

吞吐量:用户代码执行时间/(用户代码执行时间+垃圾回收时间) (PS+PO)
响应时间:垃圾回收时间越短(STW),响应时间越快。(G1)


提示:以下是本篇文章正文内容,下面案例可供参考

常用的垃圾收集器组合参数

JVM常用的命令行参数

HotSpot:

标准: -开始 所有HotSpot支持
非标准: -X开始 特定版本HotSpot支持
不稳定: -XX开始 下个版本有可能取消

java -version 版本
java --XX:PrintCommandLineFlags 打印启动参数
java -Xmn10M -Xmx10M -Xms10M 堆的年轻代 堆的最大 初始化大小
java -XX:+PrintGC 打印GC日志 -XX:+PrintGCDetails(详细)

GC日志格式

调优 目标
  • 根据需求JVM规划和调优
  • 优化运行JVM运行环境
  • 解决JVM运行过程中出现各种问题OOM等
规划开始

调优首先以业务场景开始
压力测试监控,查看调优结果
步骤:

运行环境优化

解决JVM运行过程中问题 常见问题解决步骤
  1. 运维团队或监控系统报警
  2. top查看进程资源占用情况 And 查看具体线程top -Hp pid
  3. jstack -pid 定位线程状况 重点关注WAITING BLOCKED

重点关注WAITING BLOCKED
一定要自定义线程池的名字,方便定位问题。---->ThreadFactory

  1. jinfo pid 查看jvm进程参数信息
  2. 动态查看gc信息 jstat -gc 1000 10
  3. 查看内存对象占用情况 jmap -histo pid|head -20

线上系统,内存大的话,jmap执行期间对进程影响很大。
避免影响:1.系统高可用 2.OOM的时候自动产生堆转存文件(-XX:+HeapDumpOnOutOfMemoryError)

  1. 打印堆占用情况到文件 jmap -dump:live,format=b,file=heap.bin
  2. 分析堆文件 jhat -J-mx512M 堆文件
arthas

Arthas 是Alibaba开源的Java诊断工具

  • jvm观察jvm信息
  • thread观察线程情况
  • jad 类 反编译
  • dashboard查看系统情况
  • heapdump导出堆文件
  • 类替换redefine
场景案列分析
  • 硬件升级带来的卡顿 内存升级后,造成垃圾回收时间增加
  • tomcat 对象头默认值过大,造成堆内对象过大
  • lambda表达式 匿名内部类造成的方法区过大
  • 直接内存溢出 NIO使用或UNsafe使用
  • 方法栈溢出 -Xss
  • 重新finalize引起的频繁GC
  • 调用system.gc方法 引起频繁的FGC
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号