jvm 调优篇---jvm内存调优的概述篇(含常用命令jinfo等)

目录

一  调优总结

1.1 调优的目的

1.2 调优的依据

1.3 调优的具体部署

1.4 调优常用命令参数

二  内存泄漏和内存溢出

2.1 泄漏与溢出

2.2 触发内存泄漏场景

2.3 触发溢出泄漏场景

2.4 OOM解决总体思路

2.5 使用可视化工具进行查看调优

 2.5.1 通过visual vm查看

2.5.2  通过MAT工具

三 jvm调优篇

3.1 查看新生代和老年代的比例

3.2  查看新生代,survivor和Eden区比例

3.3 使用jinfo查看jvm调优参数

3.4 使用jstat查看堆内存变化触发fullgc

3.5 使用jmap查看对象内存大小


一  调优总结

1.1 调优的目的

减少full gc的次数,防止出现oom;解决运行缓慢、卡顿问题。

1.2 调优的依据

1调优的依据:运行日志;异常堆栈;GC日志;线程快照;堆转存储快照

1.3 调优的具体部署

1.熟悉业务场景:没有业务场景的调优都是耍流氓

2.性能监控,发现问题: 对【GC频繁、cpuload过高、OOM、内存泄漏、死锁】等问题进行监控发现

3.性能分析,排查问题:

通过命令行方式: jstack,jmap,jstat,jinfo等命令查看堆,线程、cpu资源的变化情况

通过可视化工具,jvisulvm,arthas,MAT等工具实时分享查看jvm状态。

4.解决问题,调优实施:

1.合理优化代码

2.适当增加内存,根据业务场景选择垃圾回收器。

1)设置必要的内存参数。比如: -Xms200m -Xmx200m -XX:+PrintGC 等

2)jstat -gc 动态观察gc情况 / 阅读GC日志发现频繁GC / arthas观察 / jconsole

   jstat -gc pid 500 : 每隔500毫秒打印GC的情况

3) jmap -histo pid | head -20 查找有多少对象产生

4) jmap -dump:format=b,file=xxx pid / jmap -histo

5) 修改参数: -Xms20m -Xmx20m -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError

3.合理设置线程池数量

1)top命令观察到问题:内存不断增长,CPU占用率居高不下的进程。

 top 查看所有的进程的cpu、内存占比。

 top -Hp pid 查看指定pid下各个线程的cpu、内存占比。关注谁比较高(有可能是gc的线程)

2)jps定位具体java进程

进一步可以使用jstack pid 对进程中的各个线程查看。尤其对WAITING的多个线程要关注。

4.根据情况使用中间件,如缓存,消息队列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值