摸鱼编程
https://juejin.cn/post/7269660552677294120
前言
OutOfMemoryError (以下缩写为oom)是java 中最常见的内存问题,也是一旦影响就非常大的问题。oom出现的原因就是内存不够用了,GC虽然在回收,然后回收的速度赶不上新对象分配了或者根本就没有对象可以被回收,就会抛出OutOfMemoryError 错误。
在这里笔者把问题发现-问题止血-问题分析-问题规避
的闭环思路来带领读者了解整个解决方案。
>](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1a2b30386ba0427c92c7cf35a7b1cfbe~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp?))
五种常见的oom错误
- java.lang.OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: unable to create new native thread
- java.lang.OutOfMemoryError: Metaspace
- java.lang.OutOfMemoryError: Direct buffer memory
- java.lang.OutOfMemoryError: GC overhead limit exceeded
通用手段
发现
通过以下手段可以做到感知应该出现了oom.
- 日志监控
通过监控日志中关键字java.lang.OutOfMemoryError
,就可以知道应用是否出现oom.对于文件的监控,可以使用filebeat 或者 flume 等采集.