如何在生产环境排查 OutOfMemoryError (OOM)

作者/分享人:李艳鹏
向 Ta 提问
蚂蚁金服高级技术专家,著有《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》,曾经在易宝支付、花旗银行、甲骨文、新浪微博、路透社等大型IT互联网公司担任技术负责人和架构师的工作,现专注于区块链平台的研发与推广,擅长大规模高并发的线上与线下相结合的第三方支付平台的架构规划与实施。

我们都知道 JVM 的内存管理是自动化的,Java 语言的程序指针也不需要开发人员手工释放,JVM 的 GC 会自动进行回收,但是,如果编程不当,JVM 仍然会发生内存泄漏,导致 Java 程序产生 OutOfMemoryError (OOM) 错误。产生 OOM 错误的原因包括以下内容。

  • java.lang.OutOfMemoryError:Java heap space.
  • java.lang.OutOfMemoryError:PermGen space.
  • java.lang.OutOfMemoryError:unable to create new native thread.
  • java.lang.OutOfMemoryError:GC over- head limit exceeded.

本场 Chat 聚焦在作者花费几天时间在线上排查和解决 OOM 问题的现实的全过程。

已有194人预订
预订达标
文章出炉
交流日期
     
17.06.03
17.06.20
17.06.27 20:30
查看文章评论/提问
虎啸山河
S。
看见这篇文章晚了些,但写的真的很好,并且您描述的是线上排查问题,我被你的文章都带进去了,跟看纯普通的理论知识是完全不同的,再次感谢! 另外看您是蚂蚁的,我去年年底面了你们的一个网商银行项目,不知道是不是你面的我,哈哈,可惜最终的挂了,但我去阿里的信念的是坚定的,最近我还在准备,希望今年能进西厂,与您相遇!!!
宋顺
不太严谨,最大进程数是1024,但是通过jstack打印出来的是1201,两者对不上。文中还错把1024写错为最大是1204。。。
李艳鹏: 感谢提出问题,差三个线程没对上现场就发现了,后面也解释原因了,应急目标是迅速回复服务,而不是查找每一个问题的原因,至于笔误需要改正
Mike
分析的很透彻
zorro
分析的很透彻
你可能还喜欢
Docker 入门之个人博客搭建教程
一念成魔
JVM 精华知识点汇总
胡玉洋
美团客户端响应式框架 EasyReact 开源
美团技术团队
MySQL 数据同步双机互备
小闲丶
前端游戏框架哪个好
cba
Spring Boot 最佳入门实践
老王
微信扫描登录