`
king_c
  • 浏览: 214787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java常见的内存溢出异常及解决方法

    博客分类:
  • java
 
阅读更多

Java的内存溢出,主要是两方面的异常:堆内存溢出、非堆内存溢出。

一、 java.lang.OutOfMemoryError: Java heap space。 Heap size 设置 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,以减少JVM不断扩展内存带来的性能损耗,而-Xmn为1/4的 -Xmx值。


解决方法:手动设置Heap size,-Xms1024m -Xmx1024m -Xmn256m

二、java.lang.OutOfMemoryError: PermGen space。 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法: 手动设置MaxPermSize大小。在Java启动参数中加上“-XX:MaxPermSize=128m”,启动参数中,持久代的大小不宜过大。

建议:将相同的第三方jar文件移置到应用服务器的公用lib目录下,这样可以达到减少jar文件重复占用内存的目的。

 

分享到:
评论

相关推荐

    JAVA内存溢出问题总结

    JAVA内存溢出问题总结

    Java常见内存溢出异常分析

    下面我们通过一段代码来模拟一下此种情况的内存溢出。  import java.util.*;  import java.lang.*;  public class OOMTest{  public void stackOverFlowMethod(){  stackOverFlowMetho

    Java常见内存溢出异常分析与解决

    本篇文章主要分析了JAVA程序内存溢出问题原因,较为详细的说明了java导致程序内存溢出的原因与解决方法,感兴趣的小伙伴们可以参考一下。

    java内存机制及异常处理

    描述java内存回收机制,异常出现原因,解决方案

    JAVA内存区域与内存溢出异常归类.pdf

    JAVA内存区域与内存溢出异常归类.pdf

    Java编程常见内存溢出异常与代码示例

    主要介绍了Java编程常见内存溢出异常与代码示例,具有一定参考价值,需要的朋友可以了解下。

    poi大量数据读取gc内存溢出解决方案

    poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...

    深入理解Java虚拟机——Java内存区域与内存溢出异常.xmind

    这是自己读《深入理解Java虚拟机》时候用XMind建立的思维导图,目的是为了能够帮助自己整理、梳理相关的知识以及方便自己日后的回顾,帮助自己建立起关于JVM的知识体系,里边也有一些对相关内容的补充,通过备注的...

    内存溢出及锁表问题的分析与解决

    本人原创文章,分要的多点. 内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序...本文以笔者开发和支持的多个项目为例,与大家分享在开发过程中遇到的Java内存溢出和数据库锁表的检测和处理解决过程。

    Java内存溢出及分析

     java内存有几种:程序计数器,虚拟机栈,方法常量区,堆,本地方法栈,直接内存。既然分析内存溢出,那从这几种内存逐一分析。  1,程序计数器:是一个较小的内存空间,是但钱线程的字节码行号指示器,这个不会...

    Java内存区域与内存溢出异常详解

    主要介绍了Java内存区域与内存溢出异常详解的相关资料,需要的朋友可以参考下

    Tomcat内存溢出的三种情况及解决办法分析

    Tomcat内存溢出的三种情况及解决办法分析 Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个...

    浅谈java内存管理与内存溢出异常

    下面小编就为大家带来一篇浅谈java内存管理与内存溢出异常。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    解决Java_heap_space问题

    解决Java_heap_space问题

    lanlan2017#JavaReadingNotes#2.4.4 本机直接内存溢出1

    - 第2章 Java内存区域与内存溢出异常- 2.4 实战:OutOfMemoryError异常2.4.4 本机直接内存溢出直接内存(Direct Memory

    JAVA内存泄漏分析工具

    该工具用来排查线上程序出现内存泄漏或溢出,死锁等相关问题,快速分析堆栈异常情况,找到问题代码进行修复。

    java 异常总结

    其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部...

    Java常见面试问题整理.docx

    线程共享:异常:OOM 内存溢出 1.Java堆:对于大多数应用来说,Java堆是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,...

    java编程常见问题

    33.java.lang.OutOfMemoryError 内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。 34.java.lang.StackOverflowError 堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该...

    学习JVM之java内存区域与异常

    关于JVM内存区域的知识对于初学者来说其实是很重要的,了解Java内存分配的原理,这对于以后JAVA的学习会有更深刻的理解。下面来看看详细介绍。

Global site tag (gtag.js) - Google Analytics