2 Star 65 Fork 54

柳诗妍 / Java-Interview-Advanced

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
43.md 1.71 KB
一键复制 编辑 原始数据 按行查看 历史
leelovejava 提交于 2020-03-31 11:56 . 第三季 JVM

43、你知道发生OOM之后,应该如何排查和处理线上系统的OOM问题?

狸猫技术窝公众号里的救火队队长的《从0开始带你成为jvm实战高手》

oom可能发生在哪几个区域,解决的一个思路,在jvm里可以设置几个参数,如果一旦jvm发生了oom之后,就会导出一份内存快照,就会有当时的线上内存里的对象的一个情况,可以用MAT这样的工具,可以去分析

无非就是找出来当时的时候占用内存最大的对象都是谁,找出来那些对象是在代码中哪些地方创建出来的,一般来说就是可能会对内存去做一个调优

还是得去参考jvm专栏里的大量的案例背景,从业务背景出发,一步步去说明,在什么样的业务背景之下,为什么会产生oom的问题呢?必然会导致系统可能就是崩溃了,客服会反馈说,XX功能不能用了,说某个系统崩溃了

找他自动导出的内存快照,分析,XX对象,直接去定位代码,修改代码

你一定要把案例的业务、背景和思想给吸收了,就得融入到自己的业务里去,我负责的业务系统,在什么样的情况下,可能说会出现一大批的对象卡在内存里,无法回收,导致我系统没法放更多的对象了

产生OOM,内存泄漏的问题,少数场景在互联网公司,超高并发下的oom问题,瞬时大量存活对象占据内存, 导致没法创建更多的对象了

你也得去思考,甚至去模拟一下,最好可以模拟出来,oom不是你自己的代码,可能是你依赖的第三方的组件,netty导致的,结合自己的项目去一步一步的分析,oom问题的产生,和解决的过程

Java
1
https://gitee.com/th_520/Java-Interview-Advanced.git
git@gitee.com:th_520/Java-Interview-Advanced.git
th_520
Java-Interview-Advanced
Java-Interview-Advanced
master

搜索帮助