【JVM调优】Day03:GC参数、OOM出现方式、调优实战

一、常用GC参数(20个左右即可)

1、各种垃圾回收器的参数

PS + PO 常用的只有几十个

CMS的比较多,不建议使用

G1的常用参数简单

ZGC只有三个参数

二、OOM出现的方式

1、写一个让内存溢出的函数

(1)简单案例-list,往list内部添加元素

main方法的根对象往里装

(2)复杂案例-模拟数据库读取数据,结果记录传输

使用了线程池

回收的内存越来越小--吃内存的情况

最后,不停full gc

每次回收几K

最终产生OOM

查不出来的bug-进行重启

2、推荐一个垃圾回收相关的功能-Arthas

最常用:dashboard-对系统的观察

各个代的回收算法

使用jvm查看默认的命令

3、观察哪些对象在吃内存-排查(实际调优经验)

jps 查看进程编号

jmap -histo 进程ID  | 20

4、如何回答

(1)jmap会暂停堆内存,对内存产生巨大影响×

(2)java 启动的时候配置HwapDownOutOfMemory

一旦发生OOM,会导出一个文件

对文件进行分析

(3)堆内存超级大时,如何定位问题

上述工具,24小时分析不出来结果

四、调优实战

1、java相关命令

java -version

java:java的所有参数

-开头,表示

java的标准参数

2、non-standard,非标准参数,以-X开头的

参数:java -X

程序最小内存,最大内存

3、另外一种参数-XX

java -XX:+PrintFlagsFinal,加more分页

728个参数

posted @ 2022-01-12 16:24  哥们要飞  阅读(122)  评论(0编辑  收藏  举报