首页   快速返回

java内存溢出     所属分类 java
java.lang.OutOfMemoryError.Java heap space

堆大小设置  -Xms4096m -Xmx4096m


java.lang.OutOfMemoryError: PermGen space
持久代溢出  主要用于存放Class和Meta信息  , 动态加载类的应用会导致该问题
-XX:MaxPermSize=128m

元数据区溢出
加载大量的class(ASM、Cglib、javassit、动态代理类生成)
大量JSP文件编译成Servlet类文件  

合理使用ClassLoader,定期回收 
减少动态类生成 
-XX:MetaspaceSize=512m


java.lang.OutOfMemoryError:GCoverheadlimitexceeded
JDK6新增错误类型,当GC为释放很小空间占用大量时间时抛出;一般是因为堆太小

java.lang.OutOfMemoryError:Directbuffermemory
-XX:MaxDirectMemorySize=128m
直接内存  堆外内存 
-XX:+DisableExplicitGC   可能导致堆外内存无法回收


DirectByteBuffer申请与释放
java堆外内存回收机制


java.lang.OutOfMemoryError:unable to create new native thread

减小线程栈大小   -Xss512k  默认1M
增加操作系统可用内存

java.lang.StackOverflowError
栈溢出 
栈太小 方法调用层次过多 ,譬如递归调用
设置合理的栈大小 

内存占用太多,被操作系统kill

dmesg|tail -20

[987096.767585] Out of memory: Kill process 5039 (java) score 616 or sacrifice child
[987096.769898] Killed process 5039 (java) total-vm:14803740kB, anon-rss:11304244kB, file-rss:0kB, shmem-rss:0kB

dmesg -T   
-T 时间格式化

 java应用oom被kill排查记录 

上一篇     下一篇
java类卸载机制

分布式事务

jmeter长连接配置

java restful 框架

类加载器中findClass与loadClass的区别

jetty嵌入式使用