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

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

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

PS + PO 常用的只有几十个

CMS的比较多,不建议使用

G1的常用参数简单

ZGC只有三个参数

二、OOM出现的方式

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

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

main方法的根对象往里装

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

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

使用了线程池

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

 

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

 

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

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

 

最后,不停full gc

每次回收几K

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

 

最终产生OOM

查不出来的bug-进行重启

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

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

 

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

各个代的回收算法

 

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

 

使用jvm查看默认的命令

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

 

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

jps 查看进程编号

jmap -histo 进程ID  | 20

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

 

4、如何回答

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

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

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

对文件进行分析

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

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

 

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

四、调优实战

1、java相关命令

java -version

java:java的所有参数

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

 

-开头,表示

java的标准参数

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

参数:java -X

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

 

程序最小内存,最大内存

3、另外一种参数-XX

java -XX:+PrintFlagsFinal,加more分页

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

 

728个参数

上一篇:怎样编写高质量的Java代码


下一篇:java在目录中过滤文件