JVM调优

JVM内存模型

堆:对象
栈:方法调用入栈,调用完弹栈,线程独享
方法区:存放类,字节码,常量池
javap -c xxx.class # 反编译class
JVM调优
减少full gc次数,减少full gc时间
发现垃圾?
引用计数算法
根可达算法
三种垃圾回收算法
Copying  新生代,拷贝有用的小部分
Mark Sweap  标记清除,一半一半
Mark-Compact  标记压缩
垃圾回收器
分代模型:
PS并发+PO #默认
ParNew并发+CMS并发标记清除
不分代模型
G1 #推荐
G1常用参数
调优实战
根据需求进行JVM规划预调优
-server # 以服务端模式运行
-Xms # 最小堆内存  
-Xmx # 最大堆内存,最大最小堆内存设置相同(扩缩费时)  
-XX: MetaspaceSize # 初始元空间大小    大部分ERP系统直接调整元空间大小即可 
-XX: MaxMetaspaceSize # 最大元空间大小 
-XX: MaxNewSize # 新生代最大内存,默认16M
-XX:+PrintGCDetails # 输出GC的详细日志
-XX:+PrintCommandLineFlags  -version  # 查看GC类型
-XX:+PrintFlagsFinal | wc -l   # 列出所有XX参数
jps
jinfo pid
jstat -gc pid
jstack pid | more  # 排查有没有死锁,
jmap -histo  pid   # 列出堆中的对象(生产环境不能用,会暂停堆)
CPU超高场景:分析是业务线程还是GC线程
-XX:HeapDumpOnOutOfMemoryError # 自动生成dump文件
可视化工具(生产环境不可能随便开调试端口):jcoonsole和jvisualVM,arthas(阿里)
arthas(阿里):
thread -b  # 找死锁
jad file # 在线反编译
redefine  #替换线上的class文件
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ncuwym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值