原因:
常见的有以下几种:
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. Kafka connect快速构建数据ETL通道

    摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 业余时间调研了一下Kafka connect的配置和使用,记录一些自己的理解和心得,欢迎 ...

  2. 安装Java Cer证书

    skldfsdf  Javaawtetwetwetwetwe testse Java estestset

  3. [转]解决VS2008 开发Windows Mobile 项目生成速度慢的问题

    最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...

  4. hdu 1299 Diophantus of Alexandria(数学题)

    题目链接:hdu 1299 Diophantus of Alexandria 题意: 给你一个n,让你找1/x+1/y=1/n的方案数. 题解: 对于这种数学题,一般都变变形,找找规律,通过打表我们可 ...

  5. c++ 常见问题之 const

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

  6. RubyMine 2016.1 下载 附注册激活码 破解版方法

    注册破解方法: 在要求输入注册的界面选择激活码,然后粘贴以下注册码: 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIj ...

  7. java 基本数据类型跟封装类型的差距

    import java.util.*; class test1{ public static void main(String[] args){ long start1 = System.curren ...

  8. CSS3 六边形绘制

    把一个104px的div放在它们之间,设置一个背景颜色: width: 0; border-bottom: 30px solid #6C6; border-left: 52px solid trans ...

  9. 关于Objective-C Associated Objects

    一.相关函数 与Associated Objects相关的函数有三个 1 void objc_setAssociatedObject(id object, const void *key, id va ...

  10. 关于spring autowrie的5种方式

    spring自动注入有5中方式,分别是: byName:根据自动注入类中的对象名字,会到配置文件中找相关id或者name的bean,如果找不到则不会匹配,如果找到多个bean,则会报错. byType ...