马士兵JVM






根可达算法



三色标记算法
堆的参数配置
-XX:+PrintGC 每次触发GC的时候打印相关日志
-XX:+UseSerialGC 串行回收
-XX:+PrintGCDetails 更详细的GC日志
-Xms 堆初始值
-Xmx 堆最大可用值
-Xmn 新生代堆最大可用值
-XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例.
含以-XX:SurvivorRatio=eden/from=den/to
总结:在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,
这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率。
-XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例.
-XX:NewRatio=2设置新生与老年代代参数
年轻代和年老代将根据默认的比例(1:2)分配堆内存,可以通过调整二者之间的比率NewRadio来调整二者之间的大小,也可以针对回收代,比如年轻代,通过 -XX:newSize -XX:MaxNewSize来设置其绝对大小。同样,为了防止年轻代的堆收缩,我们通常会把-XX:newSize -XX:MaxNewSize设置为同样大小
定位OOM
查看进行中java进程
jps
进程详细信息 -xxx进程号
jinfo -xxx
进程栈信息 -xxx进程号
jstack -xxx
前20行进程使用类的内存情况
jmap -histo -xxx | head -20
查看内存情况
jstat -gc -XXX

导出堆离线分析
jmap -dump:format=b,file=20201108.hprof 2017
b二进制 20201108任意文件名开头 2017进程号
分析工具
MAT Jprofiler jvisualvm
线上工具
Arthas
dashboard 仪表盘

thread 查询所有线程
thread -b 查询死锁线程
jad 包名.类名 线上反编译,查看动态代理类或其他类信息
redefine /root/TT.class 重定义类实现热部署
大文件dump情况
日志分析+活的线程jmap分析
分布式全链路压测
trace 类命 方法名
trace ABC a


浙公网安备 33010602011771号