原因:
常见的有以下几种:
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
5.启动参数内存值设定的过小;

常见错误提示:
1.tomcat:java.lang.OutOfMemoryError: PermGen space 
2.tomcat:java.lang.OutOfMemoryError: Java heap space
3.tomcat:java.lang.OutOfMemoryError: unable to create new native thread
4.weblogic:Root cause of ServletException java.lang.OutOfMemoryError
5.resin:java.lang.OutOfMemoryError
6.java:java.lang.OutOfMemoryError

分为两种情况:
1、用dos窗口启动tomcat
Windows下,在文件{tomcat_home}/bin/catalina.bat
在文件开头可增加如下设置:
set JAVA_OPTS=-Xms512m -Xmx512m -Xss1024k -XX:MaxNewSize=256M -XX:MaxPermSize=256M
Unix/Linux下,在文件{tomcat_home}/bin/catalina.sh的前面,可增加如下设置:
JAVA_OPTS='-Xms512m -Xmx512m -Xss1024k -XX:MaxNewSize=256M -XX:MaxPermSize=256M'
各参数释义:
-Xms:程序初始化的时候内存栈的大小。
-Xmx:应用程序(不是jvm)能够使用的最大内存数,这个值也不应该设置过大,超过机器内存。否则,tomcat会无法启动。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xss:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M。
-XX:MaxPermSize:设置持久代大小
-XX:NewSize:设置年轻代大小

2、tomcat做为系统服务
修改tomcat路径下bin文件夹下service.bat文件
找到"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions
在后面的双引号""中间添加:-Xms512M;-Xmx1024M;-XX:NewRatio=3;-XX:PermSize=256M;-XX:MaxPermSize=512M;-XX:-UseGCOverheadLimit;
然后卸载掉服务,重新安装一遍,启动,生效。

-----------------------------------------------------
1、java.lang.OutOfMemoryError: unable to create new native thread
常见出现在进行
set JAVA_OPTS=-Xms512m -Xmx512m -Xss1024k -XX:MaxNewSize=256M -XX:MaxPermSize=256M
设置后
JVM申请的heap会占用相同大小的地址空间(address space)。在Windows 32位操作系统中,分配给每个程序的地址空间只有2GB(当然也有3GB的开关)。
而每个不同的JVM的堆和其创建的进程栈都依赖于同一个进程地址空间,所以这也是此消彼长的原因。 
有方法可以提高创建线程的数量: 减少单个线程栈的大小,在JVM启动中使用-Xss参数。
建议
set JAVA_OPTS=-Xms512m -Xmx512m -Xss512k -XX:MaxNewSize=256M -XX:MaxPermSize=256M

2、Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
常见出现在进行
在后面的双引号""中间添加:-Xms512M;-Xmx1024M;-XX:NewRatio=3;-XX:PermSize=256M;-XX:MaxPermSize=512M;-XX:-UseGCOverheadLimit;
设置后
JDK6新增错误类型。当GC为释放很小空间占用大量时间时抛出。
一般是因为堆太小。导致异常的原因:没有足够的内存。
建议
在双引号""中间添加一个-XX:-UseGCOverheadLimit;

java.lang.OutOfMemoryError异常解决方法的更多相关文章

  1. Tomcat部署java项目java.lang.OutOfMemoryError异常解决方法

    java.lang.OutOfMemoryError异常解决方法 Window系统环境下,在catalina.bat文件第一行添加以下内容 set JAVA_OPTS=-Xms512m -Xmx512 ...

  2. Hibernate查询出现java.lang.IllegalArgumentException异常解决方法

    Hibernate查询出现java.lang.IllegalArgumentException. 异常信息如下:java.lang.IllegalArgumentException        at ...

  3. Java中线程出现Exception in thread "Thread-0" java.lang.IllegalMonitorStateException异常 解决方法

    代码 package thread; public class TestChongNeng { public static void main(String[] args) { Thread t1 = ...

  4. java.lang.ClassNotFoundException的解决方法

    java.lang.ClassNotFoundException的解决方法   出现这个问题的原因可能很多,但是最终原因都是部署的项目文件中没有这个类包. 那么出错的点在哪呢?逐一排除! 1.首先在项 ...

  5. Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法

    当我把Eclipse中的 Android ADT插件从21.1.0更新到22.0.1之后,安装后运行程序抛出java.lang.VerifyError异常. 经过调查,终于找到了一个有效的解决办法: ...

  6. java.lang.NullPointerException at org.apache.jsp.**_jsp.jspInit(**_jsp.java)tomcat启动异常解决方法

    今天遇到的其他一个问题就是,启动tomcat时,报:java.lang.NullPointerException at org.apache.jsp.**_jsp.jspInit(index_jsp. ...

  7. 对于jfinal中java.lang.Long cannot be cast to java.lang.Integer的解决方法

    @Jfinal 老大提供的解决方法 当数据库字段为 int 型(有符号int型),但是如果在 sql 中使用了某些函数,jdbc 会自动转型为 long,例如:select sum(money) fr ...

  8. (转)Android工程出现 java.lang.NoClassDefFoundError错误解决方法

    在Eclipse中,导入Android工程,工程没有报错,运行时,出现 java.lang.NoClassDefFoundError类没有找到的错误.从问题上可以看出是导入包出错的原因.遂百度加谷歌. ...

  9. Maven打包时出现“Show Console View”错误弹出框,错误详情为“An internal error has occurred. java.lang.NullPointerException”的解决方法

    今天为项目打包时出现了下面的错误提示: 打开Details里面写的是“An internal error has occurred. java.lang.NullPointerException”.在 ...

随机推荐

  1. MS Word 目录排版

    昨天整理一份把网页的内容复制粘贴到Word里的文件,碰到了这样一个问题: 网页上面也会有一级标题,二级标题,三级标题等.当我们在写博客的时候,也会去使用这些.这也就导致复制过来之后,直接生成的目录很乱 ...

  2. struts2框架学习(二)

    ---恢复内容开始--- 一.搭建步奏 1.新建web项目,进行必备Jar包的拷贝,放到lib目录以便项目的引用. 2.拷贝框架的核心配置文件Struts.xml,放到src目录下,保留一个基本配置即 ...

  3. CentOS 7安装redis及php扩展

    安装remi源 # wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # rpm -Uvh remi-release-7 ...

  4. jQuery的css

    1.css(name|pro|[,val|fn]) 访问匹配元素的样式属性. 参数name 描述: 取得第一个段落的color样式属性的值. $("p").css("co ...

  5. c++ 常见问题之 const

    const 默认状态下const对象仅在文件内有效,添加extern关键字可以在多个文件共享 const 引用: 可以把引用绑定到const对象上,对常量的引用不能被用作修改它所绑定的对象 const ...

  6. 64位Java开发平台的选择,如何区分JDK,Tomcat,eclipse的32位与64版本

    当你想下载Linux.JDK.Tomcat.eclipse时,你是下载32位版本还是64位版本?64位版本有两种,应该选哪一个? 当你看到这些内容:x86.x64.x86-32.x86-64.ia64 ...

  7. Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8

    1,Project Structure里确认两个地方:Project sdk以及project language level 2,Project Structure->Modules里Sourc ...

  8. tomcat配置https方法

    利用tomcat服务器配置https双向认证 步骤 1.为服务器生成证书进入控制台,切换到%JAVA_HOME%/bin目录,具体操作略. 使用keytool为Tomcat生成证书,假定目标机器的域名 ...

  9. 将图片转换为base64 格式

    1.页面上的图片,转换成base64格式,可以通过canvas 的 toDataURL 例子:给定图片的url 将图片转换为base64 var imageSrc = "../images/ ...

  10. Swift3GCD

    GCD的使用在Swift3中的方法 //串行队列 let q:DispatchQueue = DispatchQueue(label: "xiaosi") //并发队列 qos : ...