以下内容转自:
http://blog.csdn.net/carus/archive/2010/11/19/6020960.aspx
首先检查程序有没有限入死循环
这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的。第一次出现这样的的问题以后,引发了其他的问题。在网上一查可能是JAVA的堆栈设置太小的原因。
跟据网上的答案大致有这两种解决方法:
1、设置环境变量
解决方法:手动设置Heap size
修改TOMCAT_HOME/bin/catalina.sh
set JAVA_OPTS= -Xms32m -Xmx512m
可以根据自己机器的内存进行更改。
2、java -Xms32m -Xmx800m className
就是在执行JAVA类文件时加上这个参数,其中className是需要执行的确类名。(包括包名)
这个解决问题了。而且执行的速度比没有设置的时候快很多。
如果在测试的时候可能会用Eclispe 这时候就需要在Eclipse ->run -arguments 中的VM arguments 中输入-Xms32m -Xmx800m这个参数就可以了。
后来在Eclilpse中修改了启动参数,在VM arguments 加入了-Xms32m -Xmx800m,问题解决。
一、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大小
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
二、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选项设置为相同,而-Xmn为1/4的-Xmx值。
解决方法:手动设置Heap size
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
三、实例,以下给出1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
很大的web工程,用tomcat默认分配的内存空间无法启动,如果不是在myeclipse中启动tomcat可以对tomcat这样设置:
TOMCAT_HOME\bin\catalina.bat 中添加这样一句话:
set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m
如果要在myeclipse中启动,上述的修改就不起作用了,可如下设置:
Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的
Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m
以上是转贴,但本人遇见的问题是:在myeclipse中启动Tomcat时,提示"ava.lang.OutOfMemoryError: Java heap space",解决办法就是:
Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的
Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m
分享到:
相关推荐
总之,"java.lang.OutOfMemoryError: PermGen space"错误是由于Java虚拟机的 PermGen 区域内存不足造成的,可以通过增大 PermGen 区域的大小、升级JVM版本、优化类加载和库的使用等方式来解决。对于任何内存管理问题...
### Java.lang.OutOfMemoryError: PermGen space 及其解决方法 #### 一、PermGen space 概述 在Java虚拟机(JVM)中,PermGen space(永久代)是用于存储类的信息、常量、静态变量等数据的区域。在Java 8之前,Perm...
解决 Eclipse 中通过 Tomcat 运行 J2EE 项目 java.lang.OutOfMemoryError PermGen space 的关键是增加 JVM 的内存空间,通过添加合适的参数,可以避免 PermGen space 溢出,确保项目的稳定运行。
### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...
PermGen space是Java虚拟机(JVM)内存模型的一部分,用于存放加载的类信息、字符串常量池、静态变量以及其他与类有关的数据。与堆内存不同,PermGen space的大小默认相对较小,因此容易出现内存溢出的情况。 #### ...
1. **在`catalina.bat`文件中设置JVM参数**:通过设置`JAVA_OPTS`变量来增加PermGen空间的初始和最大值。 2. **在MyEclipse中配置Tomcat服务器的JVM参数**:在服务器配置的`Optional Java VM arguments`中加入适当的...
然而,在运行过程中,开发者可能会遇到一个棘手的问题,即`OutOfMemoryError: PermGen space`。这个错误表明Java虚拟机(JVM)的永久代(PermGen)空间已满,无法再分配内存给新加载的类和元数据。 PermGen空间是...
具体表现为在访问部署的应用程序时出现`java.lang.OutOfMemoryError: PermGen space`错误。这一错误通常是因为JVM(Java虚拟机)的内存设置不合理导致。 #### 内存溢出原因分析 内存溢出主要是由于JVM在运行时分配...
`java.lang.OutOfMemoryError:Java heap space`是一个常见的异常,但它通常是可以通过调整JVM参数、优化代码逻辑以及使用适当的工具来检测和解决内存泄露等方式来有效处理的。开发者应当养成良好的编程习惯,及时...
当永久代空间不足时,会触发“java.lang.OutOfMemoryError: PermGen space”错误。解决此问题的方法包括: 1. **调整PermGen大小**:同样通过修改`JAVA_OPTS`变量,增加`-XX:PermSize`和`-XX:MaxPermSize`参数。...
- `-XX:PermSize=128M`:设置永久代(PermGen space)初始大小为128MB。 - `-XX:MaxPermSize=256M`:设置永久代的最大大小为256MB。 #### 四、Tomcat中的JVM设置 对于部署在Tomcat上的Java Web应用程序来说,合理...
其中`-Xms`表示初始堆内存大小,`-Xmx`表示最大堆内存大小,而`-XX:MaxPermSize`则用于设置永久代(PermGen space)的最大值(注意,在Java 8及以上版本中,PermGen已被元空间所取代)。 ##### 2. 在Eclipse中配置...
**5.2 java.lang.OutOfMemoryError: PermGen space** 问题描述:在Eclipse中使用Tomcat启动项目时,可能会遇到内存溢出错误。 **解决方法:** - 调整JVM参数以增加内存分配。 - 在Eclipse中打开Run Configurations...
总结来说,解决MyEclipse内存溢出问题需要理解Java内存模型和JVM参数设置,合理分配堆内存、新生代和永久代的大小。通过监控和调整这些参数,可以有效地避免内存溢出问题,提升应用的稳定性和性能。
3. **PermGen Space**:永久代空间,用于存储类定义、常量池等数据。在Java 8之后被Metaspace所替代。 4. **Xms与Xmx参数**: - **Xms**:设置JVM启动时的初始堆内存大小。 - **Xmx**:设置JVM的最大堆内存限制。 ...