【视频笔记】十分钟学会排查线上JVM内存溢出
启动应用

prometheus配置
prometheus的抓取任务

#配置内存溢出时dump及dump的目录
nohup java -Xms200m -Xmx200m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/jdk/dump -jar integation-mybatis-0.0.1-SNAPSHOT.jar > /usr/jdk/error.log &

测试缓存500万个对象

要有监控预警
代码溢出之前,一般会不停的gc了,gc是很消耗cpu的,这时候整个系统的响应也会变慢
调用消耗缓存的接口后,内存占用开始满了

cpu也是增高的

服务器日志,有OutOfMemoryError

指定的dump文件里生成了hprof文件

MAT工具(Eclipse Memory Analyzer Tool)
Dominator Tree: List the biggest objects and what they keep alive 最大的对象给你列出来

#自己实际使用情况,很多时候,是没有这种很明显的大对象的,一般占用很大的事char[],byte[] 这种,稍好一点的情况是string类型的,里面还能看到一些字符串内容,但也不一定能看到占比很大的那种
线程一定要取名字,有时也可以方便通过有问题的线程来找到代码
问题二: 内存升高
重启进程后,

jps 查看应用进程号
jmap获取dump文件
jmap -dump:format=hprof,file=/usr/jdk/dumpfile.hprof [pid]
http://ip:port/actuator/heapdump

自己平时有使用spring配置的heapdump那种导出
浙公网安备 33010602011771号