一文了解OOM及解决方案
本文来自:
https://bloggceasy.files.wordpress.com/2015/05/outofmemoryerror2.pdf
1. Java 堆空间
发生频率:5颗星
造成原因
无法在 Java 堆中分配对象
吞吐量增加
应用程序无意中保存了对象引用,对象无法被 GC 回收
应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时 finalizer 线程的处理能力无法跟上结束队列的增长
解决方案
单位对应:GB -> G, g;MB -> M, m;KB -> K, k
使用 -Xmx 增加堆大小
修复应用程序中的内存泄漏
2. GC 开销超过限制
发生频率:5颗星
造成原因
Java 进程98%的时间在进行垃圾回收,恢复了不到2%的堆空间,最后连续5个(编译时常量)垃圾回收一直如此。
解决方案
使用 -Xmx 增加堆大小
使用 -XX:-UseGCOverheadLimit 取消 GC 开销限制
修复应用程序中的内存泄漏
3. 请求的数组大小超过虚拟机限制
发生频率:2颗星
造成原因
应用程序试图分配一个超过堆大小的数组
解决方案
使用 -Xmx 增加堆大小
修复应用程序中分配巨大数组的 bug
4. Perm gen 空间
发生频率:3颗星
造成原因
Perm gen 空间包含:
类的名字、字段、方法
与类相关的对象数组和类型数组
JIT 编译器优化
当 Perm gen 空间用尽时,将抛出异常。
解决方案
使用 -XX: MaxPermSize 增加 Permgen 大小
不重启应用部署应用程序可能会导致此问题。重启 JVM 解决
5. Metaspace
发生频率:3颗星
造成原因
从 Java 8 开始 Perm gen 改成了 Metaspace,在本机内存中分配 class 元数据(称为 metaspace)。如果 metaspace 耗尽,则抛出异常
解决方案
通过命令行设置 -XX: MaxMetaSpaceSize 增加 metaspace 大小
取消 -XX: maxmetsspacedize
减小 Java 堆大小,为 MetaSpace 提供更多的可用空间
为服务器分配更多的内存
可能是应用程序 bug,修复 bug
6. 无法新建本机线程
发生频率:5颗星
造成原因
内存不足,无法创建新线程。由于线程在本机内存中创建,报告这个错误表明本机内存空间不足
解决方案
为机器分配更多的内存
减少 Java 堆空间
修复应用程序中的线程泄漏。
增加操作系统级别的限制
ulimit -a
用户进程数增大 (-u) 1800
使用 -Xss 减小线程堆栈大小
7. 杀死进程或子进程
发生频率:1颗星
造成原因
内核任务:内存不足结束器,在可用内存极低的情况下会杀死进程
解决方案
将进程迁移到不同的机器上
给机器增加更多内存
与其他 OOM 错误不同,这是由操作系统而非 JVM 触发的。
8. 发生 stack_trace_with_native_method
发生频率:1颗星
造成原因
本机方法(native method)分配失败
打印的堆栈跟踪信息,最顶层的帧是本机方法
解决方案
使用操作系统本地工具进行诊断
一文了解OOM及解决方案相关推荐
- 一文了解OOM及解决方案,成功入职字节跳动
一.内存与线程 1.内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平.JVM的内存结构规定Java程序 ...
- 一文了解OOM及解决方案,你还看不明白?
InnoDB总体结构 首先我们来看官网的一张图(图片来源于MySQL官网): 从上图中可以看出其主要分为两部分结构,一部分为内存中的结构(上图左边),一部分为磁盘中的结构(上图右边) 内存结构 Inn ...
- 借花献佛!一文了解OOM及解决方案,终局之战
前言 阿里巴巴,作为国内互联网公司的Top,算是业界的标杆,有阿里背景的程序员,也更具有权威性.作为程序员,都清楚阿里对于员工要求有多高,技术人员掌握的技术水平更是望尘莫及.所以,大厂程序员的很多经验 ...
- [原创]java读写word文档,完美解决方案
[原创]java读写word文档,完美解决方案 参考文章: (1)[原创]java读写word文档,完美解决方案 (2)https://www.cnblogs.com/ziwuxian/p/89812 ...
- knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案
knife4j knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量, ...
- Android系统(134)--- Android关于OOM的解决方案 ##OOM
Android关于OOM的解决方案 ##OOM 内存溢出(Out Of Memory) 也就是说内存占有量超过了VM所分配的最大 ##出现OOM的原因 加载对象过大 相应资源过多,来不及释放 ##如何 ...
- doc转swf,主流文档在线查看解决方案--类似百度文档功能
引言: 最近项目中对上传的文件需要在线查看功能(就是不用下载到本地,可以直接在网页里打开的查看),通过几周的研究终于搞定,在此总结下供有同样需求的同仁查询和使用. 原理: 通常的在线查看功能都是使用 ...
- java读写word文档,完美解决方案
java读写word文档,完美解决方案 java2word 是一个在java程序中调用 MS Office Word 文档的组件(类库).该组件提供了一组简单的接口,以便java程序调用他的服务操作W ...
- IP-Guard文档防泄密解决方案
文档防泄密解决方案 概述 在信息化不断推进的今天,计算机.互联网等设备无疑提高了企业的办公效率.但企业在享受着高科技带来的便利之时也面临着随之而来的困扰.下面是一组真是的数据: 80%的安全威胁来自企 ...
最新文章
- 《Swift 权威指南》——第6章,第6.7节常量和变量参数
- RedHat/CentOS系统信息查看命令大全
- Linux安装PHP报错Sorry, I cannot run apxs. Possible reasons follow:
- java开发13寸_Java 从入门到进阶之路(二十九)
- distinct sql用法_十分钟搞懂SQL数据分析
- 网上一片红色的中国心,我也来跟随潮流,表达对祖国的热爱!
- 多线程读取视频及深度学习推理
- ADS 2022 软件下载与安装教程
- SSRF---gopher和dict打redis
- 2020-11-04 [蓝桥杯2018决赛]阅兵方阵
- Activity的概述
- 如何自动识别视频语音内容并生成字幕
- 微信小程序云函数请求接口
- mac电脑最好用的图片浏览器,没有之一
- MATLAB入门学习笔记12
- ROS学习总结十二:给自己的机器人添加传感器
- testlink mysql配置_testlink安装及配置
- Linux系统管理上机作业1
- 华为无线wifi设备连接到服务器,华为wifi路由器安装上网的方法
- 什么叫做展望_什么叫做展望未来。。