1、OOM for Heap=>例如:java.lang.OutOfMemoryError: Java heap space

分  析

此OOM是由于JVM中heap的***值不满足需要,将设置heap的***值调高即可,参数样例为:-Xmx2G

解决方法

调高heap的***值,即-Xmx的值调大。2、OOM for Perm=>例如:java.lang.OutOfMemoryError: Java perm space

分  析

此OOM是由于JVM中perm的***值不满足需要,将设置perm的***值调高即可,参数样例为:-XX:MaxPermSize=512M

解决方法

调高heap的***值,即-XX:MaxPermSize的值调大。

另外,注意一点,Perm一般是在JVM启动时加载类进来,如果是JVM运行较长一段时间而不是刚启动后溢出的话,很有可能是由于运行时有类被动态加载进来,此时建议用CMS策略中的类卸载配置。

如:-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled3、OOM for GC=>例如:java.lang.OutOfMemoryError: GC overhead limit exceeded

分  析

此OOM是由于JVM在GC时,对象过多,导致内存溢出,建议调整GC的策略,在一定比例下开始GC而不要使用默认的策略,或者将新代和老代设置合适的大小,需要进行微调存活率。

解决方法

改变GC策略,在老代80%时就是开始GC,并且将-XX:SurvivorRatio(-XX:SurvivorRatio=8)和-XX:NewRatio(-XX:NewRatio=4)设置的更合理。4、OOM for native thread created=>

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

分  析

参考如下:

(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

MaxProcessMemory 指的是一个进程的***内存

JVMMemory JVM内存

ReservedOsMemory 保留的操作系统内存

ThreadStackSize 线程栈的大小

如果JVM内存调的过大或者可利用率小于20%,可以建议将heap及perm的***值下调,并将线程栈调小,即-Xss调小,如:-Xss128k

解决方法

在JVM内存不能调小的前提下,将-Xss设置较小,如:-Xss:128k

5、OOM for allocate huge array=>例如:Exception in thread "main": java.lang.OutOfMemoryError: Requested array size exceeds VM limit

分  析

此类信息表明应用程序(或者被应用程序调用的APIs)试图分配一个大于堆大小的数组。例如,如果应用程序new一个数组对象,大小为512M,但是***堆大小为256M,因此OutOfMemoryError会抛出,因为数组的大小超过虚拟机的限制。

解决方法

(1)、首先检查heap的-Xmx是不是设置的过小

(2)、如果heap的-Xmx已经足够大,那么请检查应用程序是不是存在bug,例如:应用程序可能在计算数组的大小时,存在算法错误,导致数组的size很大,从而导致巨大的数组被分配。

6、 OOM for small swap=>例如:Exception in thread "main": java.lang.OutOfMemoryError: request bytes for . Out of swap space?

分  析

抛出这类错误,是由于从native堆中分配内存失败,并且堆内存可能接近耗尽。这类错误可能跟应用程序没有关系,例如下面两种原因也会导致错误的发生:

(1)操作系统配置了较小的交换区

(2)系统的另外一个进程正在消耗所有的内存

解决方法

(1)、检查os的swap是不是没有设置或者设置的过小

(2)、检查是否有其他进程在消耗大量的内存,从而导致当前的JVM内存不够分配。

注意:虽然有时部分显示导致OOM的原因,但大多数情况下,显示的是提示分配失败的源模块的名称,所以有必要查看日志文件,如crash时的hs文件。

原文链接:http://www.cnblogs.com/cx361/archive/2011/12/02/2271889.html

【编辑推荐】

【责任编辑:小林 TEL:(010)68476606】

点赞 0

java oom_Java中关于OOM的场景及解决方法相关推荐

  1. java oom_Java中常见OOM的场景及解决方法

    OOM for Heap  (java.lang.OutOfMemoryError: Java heap space) 分析 此OOM是由于JVM中heap的最大值不满足需要,将设置heap的最大值调 ...

  2. java web中的中文乱码问题和解决方法

    开发过程中可能会遇到页面中的中文显示为乱码无法正常查看,出现乱码的原因很多,以下举例并提供解决方法 一.HTML页面设置的编码与页面文件格式的编码不一致 检查方法:1.查看文件的编码格式 用记事本打开 ...

  3. java中main方法返回类型是6_[单选] Java application中的主类需包含main方法,main方法的返回类型是什么()。...

    [单选] Java application中的主类需包含main方法,main方法的返回类型是什么(). 更多相关问题 关于超声在人体中传播的速度,叙述正确的有A.与人体组织的弹性有关B.与人体组织的 ...

  4. java property xml,Java开发中读取XML与properties配置文件的方法

    相关阅读: 1. XML文件: 什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 2.XML文件的优点: 1)XML文档内容和结构完 ...

  5. java 转换gbk编码,java中GBK转UTF-8乱码的解决方法

    java中GBK转UTF-8乱码的解决方法 如果自己采用的是GBK编码,对方采用得到是UTF-8编码,发送数据时需要将GBK编码数据转换成UTF-8编码数据,这样对方才不会乱码. 问题出现:GBK转U ...

  6. java项目中红色感叹号_Eclipse中项目名出现红色感叹号解决方法

    Eclipse中正在使用的项目,项目名那里出现了红色感叹号?怎么去除?下面就随东坡小编一起来看看Eclipse中项目名出现红色感叹号解决方法. 问题原因 工程中classpath中指向的包路径错误 ...

  7. jquery.ajax的url中传递中文乱码问题的解决方法

    jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuer ...

  8. java多线程问题_【java 多线程】多线程并发同步问题及解决方法

    一.线程并发同步概念 线程同步其核心就在于一个"同".所谓"同"就是协同.协助.配合,"同步"就是协同步调昨,也就是按照预定的先后顺序进行运 ...

  9. java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector解决方法

    java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector解决方法 错误描述:java.lang.NoClassDefFoundErro ...

最新文章

  1. 编程中检查IIS7组件的安装情况
  2. HDU 4930 Fighting the Landlords(扯淡模拟题)
  3. 人工智能之知识图谱-学习笔记
  4. tl wn322g linux驱动下载,怎样才能装好tl_wn322G+V2.0版USB无线网卡的Linux驱动
  5. 官宣!张小龙史上最长演讲 4小时3万字完整版回应微信的一切
  6. Java File类File [] listFiles()方法(带示例)
  7. display属性值
  8. [Translation]Silverlight 4-MVVM with Commanding and WCF RIA Services
  9. MySQL的chap服务器_路由器chap的双向配置命令
  10. 进程以及状态 进程的创建
  11. Linux中sql*loader-350,SqlLoader
  12. 《Java就业培训教程》_张孝祥_书内源码_02
  13. 一起玩转CAN卡“第五通道”吧!
  14. java 禁用迅雷_【Java】我擦!迅雷的代码结构竟然被扒了精光~
  15. 第一部分:基础篇(一)
  16. CentOS cowsay “会说话的小动物”
  17. 最简单的直播源抓取方法
  18. Android新闻客户端实训-Day1类Day2接口基操
  19. nodejs 获取系统环境变量_Node.js中环境变量process.env的一些事详解
  20. stc8a--mpu6050---dmp--x角度,y角度。z旋转角度不准确,缺少前面矫准环节程序。。

热门文章

  1. python都可以干什么-python都可以做什么用
  2. python.freelycode.com-Python数据可视化2018:为什么这么多的库?
  3. 用python画爱心-python画一个玫瑰和一个爱心
  4. python编程100例头条-今日头条python面试题之编程篇
  5. python xpath语法-python中使用XPath笔记
  6. python列表切片口诀-python学习之“切片操作从入门到精通”
  7. python入门到实践-看完Python从入门到实践后该看什么书?
  8. python适合做后端开发吗-用Python开发app后端有优势吗
  9. python爬虫教程视频-python爬虫(入门教程、视频教程)
  10. Leader/Follower多线程网络模型介绍