java中OutOfMemoryError异常总结
来源:互联网 发布:笑郭网络验证4.6 编辑:程序博客网 时间:2024/06/13 21:43
最近在生产中,接连出现了OutOfMemoryError的异常,现将相关总结如下:
1 java.lang.OutOfMemoryError: unable to create new native thread
这个异常是由于操作系统没有足够的资源来创建新的线程造成的。系统创建线程时,除了要在Java堆中分配内存外,操作系统本身也需要分配资源来
创建线程。因此,当线程数量大到一定程度以后,堆中或许还有空间,但是操作系统分配不出资源来了,就出现这个异常了。
分配给Java虚拟机的内存愈多,系统剩余的资源就越少,因此,当系统内存固定时,分配给Java虚拟机的内存越多,那么,
系统总共能够产生的线程也就越少,两者成反比的关系。
解决方案:1、 线程数量不能减少的情况下,通过-Xss减小单个线程大小(stacksize),以便能生产更多的线程。
2、增加系统总共可以生产的线程数(max userprocesses)
2 java.lang.OutOfMemoryError: PermGen space
在jdk8及以下,会出现该异常,jdk8后就不存在永久代这个概念了,而是元空间,所以也就不会出现这个异常了。该异常是因为分配的永久代(Perm)空间被占满,无法为新的class分配存储空间而引发的异常。这个异常以前是没有的,但是在Java反射大量使用的今天这个异常比较常见了,jsp页面较多也会出现这个异常,因为一个jsp就对应了一个java类。当大量动态生成的类不断被加载时,最终导致Perm区被占满(因为永久代是存放类的相关信息的)。
解决方案:1、-XX:MaxPermSize=512m 增加永久代的大小
3 java.lang.OutOfMemoryError: Java heap space
当所有的堆空间都被无法回收的垃圾对象占满时,虚拟机再也无法分配新的堆空间就会抛这个异常。该异常很可能是程序中存在代码的内存泄露而导致的。
解决方案:1、通过JVM监控工具,对比溢出前后的对象引用,从而找到系统中的泄露点。
2、如果不是程序内部的泄露造成的,则增加堆的大小-Xmx 2048M
- java中OutOfMemoryError异常总结
- java.lang.OutOfMemoryError异常处理总结
- OutOfMemoryError异常总结
- OutOfMemoryError异常总结
- java OutOfMemoryError异常
- tomcat中java.lang.OutOfMemoryError: Java heap space异常处理
- tomcat中java.lang.OutOfMemoryError: PermGen space异常处理
- java中异常总结
- java.lang.OutOfMemoryError异常解决方法
- java.lang.OutOfMemoryError异常解决方法
- java.lang.OutOfMemoryError异常解决方法
- java.lang.OutOfMemoryError异常解决方法
- java.lang.OutOfMemoryError异常解决方法
- java.lang.OutOfMemoryError异常解决方法
- java.lang.OutOfMemoryError异常解决方法
- java.lang.OutOfMemoryError异常解决方法
- <JAVA>手动触发OutOfMemoryError异常
- java.lang.OutOfMemoryError异常解决方法
- 七、shell字符串
- PHP利用数据库生成API
- 树上点分治入门
- 中国攻克的特高压技术 解决困扰巴西的一道难题
- PHP 伪静态 网址参数中的【中文正则表达式】问题
- java中OutOfMemoryError异常总结
- Django添加全文搜索功能入门篇
- 大数据平台简介-CDH,HDP
- poj1182 食物链 (带权并查集)
- 算法 第四版 1.3.39 环形缓冲区
- 电气设备安装技术交底
- 选择排序
- 338. Counting Bits(动态规划)
- 网络流24题-18