文档章节

有关OutOfMemoryError的原因及处理

小木头的冬天
 小木头的冬天
发布于 2016/07/27 15:36
字数 465
阅读 15
收藏 0

堆溢出

会出现java.lang.OutOfMemoryError,紧接着还会跟一条Java heap space,at…

先通过内存映像分析工具堆dump出来的堆快照分析,分清楚是内存泄漏还是内存溢出

对于内存泄漏,查一下GC Roots的引用链,掌握泄露对象的类型信息及GC Roots引用链的信息,定位出问题的地方

对于内存溢出,看看-Xms和-Xmx,看看能不能调大,从代码上检查是否有些对象生命周期过长等

虚拟机栈和本地方法溢出

Hotspot中不区分虚拟机栈和本地方法栈,所以对于它来说-Xoss(设置本地方法栈大小)没啥用,栈容量只由-Xss来设置

一般来说,默认的Xss够用了,而且即使爆栈也会有足够的提示来解决,有的32位系统受限于寻址能力,因为多线程引起爆栈,有时候需要减少Xmx和减少栈容量来换取更多的线程

运行时常量池溢出和方法区溢出

由于常量池分配在方法区内,可以通过-XX:MaxPermSize和-XX:MaxPermSize来限制方法区大小达到间接限制常量池的目的

运行时常量池溢出也会抛OOM,但是后面提示的信息是PermGen space,说明运行时常量池属于方法区,也就是Hotspot中用就带的一部分

本机直接内存溢出

可以通过-XX:MaxDirectMemorySize指定,如果不指定默认与Java堆的最大值-Xmx一样,虽然用DirectByteBuffer分配内存也会导致溢出,但是抛异常时只是通过计算得知无法分配,并没有真正向OS申请分配内存,真正申请分配内存的方法是unsafe.allocateMemory()

本文转载自:http://www.cnblogs.com/Cratical/archive/2012/08/22/2650235.html

小木头的冬天
粉丝 14
博文 90
码字总数 39025
作品 0
长沙
架构师
私信 提问
OutOfMemoryError系列(8): Kill process or sacrifice child

一言不合就杀进程。。。 这是本系列的第八篇文章, 相关文章列表: OutOfMemoryError系列(1): Java heap space OutOfMemoryError系列(2): GC overhead limit exceeded OutOfMemoryError系列...

renfufei
2017/10/09
0
0
OutOfMemoryError系列(4): Metaspace

这是本系列的第四篇文章, 相关文章列表: OutOfMemoryError系列(1): Java heap space OutOfMemoryError系列(2): GC overhead limit exceeded OutOfMemoryError系列(3): Permgen space O......

renfufei
2017/09/22
0
0
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结

本来想写一写项目中遇到的内存溢出的问题,看了好多博客,发现有一篇特别好的博客,拾人牙慧,共享分享。 转载:http://outofmemory.cn/c/java-outOfMemoryError java.lang.OutOfMemoryErro...

mengdonghui123456
2017/02/07
0
0
OutOfMemoryError系列(3): Permgen space

说明: Permgen(永久代) 属于 JDK1.7 及之前版本的概念; 为了适应Java程序的发展, JDK8以后的版本采用限制更少的 MetaSpace 来代替, 详情请参考下一篇文章: OutOfMemoryError系列(4): Metas...

renfufei
2017/09/15
0
0
OutOfMemoryError系列(7): Requested array size exceeds VM limit

这是本系列的第七篇文章, 相关文章列表: OutOfMemoryError系列(1): Java heap space OutOfMemoryError系列(2): GC overhead limit exceeded OutOfMemoryError系列(3): Permgen space O......

renfufei
2017/10/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rsync工具常用选项以及同步的两种方式

rsync -av /etc/passwd /tmp/1.txt #rsync的本机传输写法 rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt #rsync的远程传输rsync格式rsync [OPTION] … SRC ......

林怡丰
今天
3
0
GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238

GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238 (Address already in use) 官方文档虽然有相同的问题,但是对我的问题没起作用…… 后面发现自己手贱...

wenzhizhong
昨天
3
0
REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
昨天
5
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
昨天
6
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部