`

JAVA开发(4) -JVM 内存溢出问题的解决

阅读更多

1、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

windows 平台
修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:

Java代码 复制代码 收藏代码
  1. set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m   
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m 


Linux平台
修改catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

2、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)那么就会产生此错误信息了。

解决方法:

1. 手动设置MaxPermSize大小

windows平台
修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在

Java代码 复制代码 收藏代码
  1. “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:    
  2. set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m   
“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: 
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m 

Linux平台
catalina.sh下为:

Java代码 复制代码 收藏代码
  1. JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"  
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"

3、eclipse产生java.lang.OutOfMemoryError: java heap space

 

解决办法:Eclipse -> Preference ->JAVA->Installed Java->Edit->Default VM Arguments添加

 

 Java代码 复制代码 收藏代码

-Xms1348m -Xmx1348m

 

分享到:
评论

相关推荐

    JAVA命令大全-JVM设置.rar

    Java是世界上最流行的编程语言...通过学习这个压缩包中的资料,开发者不仅可以更好地理解和操控JVM,还可以提升Java程序的运行效率,解决内存溢出、性能瓶颈等问题。对于Java开发者来说,这是一份非常宝贵的参考资料。

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    标题中的“关于tomcat乱码以及...综上所述,解决Tomcat的乱码问题需要正确配置字符编码,而处理JVM内存溢出则需优化内存分配和垃圾收集策略。对于MySQL的配置,理解`my.cnf`文件的内容对于数据库的高效运行也至关重要。

    myeclipse内存溢出问题解决方案

    内存溢出问题在Java开发中是一个常见的问题,尤其是在使用集成开发环境如MyEclipse时,由于资源消耗较大,可能会频繁出现。本文主要讨论如何解决MyEclipse中的内存溢出问题以及相关的Java内存管理知识点。 首先,...

    JAVA内存溢出问题总结

    JAVA内存溢出问题总结 JAVA 内存溢出问题是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行...内存溢出问题是 Java 开发中常见的错误,通过调整容器参数和优化程序代码,可以避免内存溢出的发生。

    完美解决java读取excel内存溢出问题.rar

    在Java开发中,处理大型Excel文件时,可能会遇到内存溢出的问题。这通常是由于Java的默认内存设置不足以处理大量数据导致的。本解决方案主要针对使用Apache POI库进行Excel读取时遇到的这类问题。 首先,Apache POI...

    JVM性能调优-JVM内存整理及GC回收.pdf

    ### JVM性能调优——JVM内存管理与GC回收详解 #### 概览 在现代软件开发领域,Java凭借其强大的跨平台能力和丰富的生态系统成为企业级应用的首选语言之一。然而,随着应用程序复杂度的提高以及业务需求的变化,...

    jvm内存溢出解决方法(jvm内存溢出怎么解决)

    JVM内存溢出是一种常见的错误,特别是在使用Java语言开发的大型应用程序中。这种错误的出现通常是由于JVM的内存分配机制不当所引起的。在本资源中,我们将对JVM内存溢出的解决方法进行详细的解释。 首先,让我们...

    java解决大批量数据导出Excel产生内存溢出的方案

    在Java开发中,当面临大批量数据导出到Excel文件时,可能会遇到内存溢出的问题。这是因为Excel文件格式本身的设计,以及Java默认处理大数据的方式,可能导致内存占用过高,尤其是在一次性加载大量数据到内存中进行...

    内存溢出解决

    针对不同的内存溢出类型,可以通过调整JVM参数来缓解或解决问题: - **堆内存溢出**: - `-Xms`:设置初始堆大小。 - `-Xmx`:设置最大堆大小。 - 示例:`-Xms256m -Xmx512m` 表示初始堆大小为256MB,最大堆大小...

    JAVA内存溢出

    JAVA内存溢出 JAVA中OutOfMemoryError(内存溢出)的三...OutOfMemoryError是Java开发中的一种常见错误,了解JVM的内存管理机制和OutOfMemoryError的三种情况及其解决方法,对于解决Java开发中内存溢出问题非常重要。

    蚂蚁课堂-JVM快速入门2

    "蚂蚁课堂-JVM快速入门2"这个课程显然旨在帮助初学者迅速掌握JVM的基础知识,特别是关于JVM参数的设置和内存溢出问题的处理。 首先,我们来深入了解JVM参数。JVM参数是用来配置和调整JVM行为的关键工具。它们分为两...

    java中jvm内存分配相关资料总结整理

    理解JVM的内存分配和运行原理是Java开发人员必备的技能,这有助于编写出更高效、更稳定的代码,并能有效地定位和解决性能问题。通过深入学习和实践,我们可以更好地驾驭Java虚拟机,提升应用程序的性能表现。

    java 内存溢出分析工具 HeapAnalyzer

    Java内存溢出(Out of Memory,OOM)是Java应用程序中常见的问题,会导致程序崩溃或性能急剧下降。HeapAnalyzer是一款强大的工具,专为分析Java应用程序的内存状况,特别是针对内存溢出问题进行诊断。本文将详细介绍...

    使用JNA替代JNI调用DLL,并解决内存溢出问题

    ### 使用JNA替代JNI调用DLL,并解决内存溢出问题 #### 问题背景 在项目的开发过程中,常常遇到需要处理二进制流数据并对其进行解析处理的情况。这种情况下,如果上层应用平台采用的是Java开发,而底层算法或数据...

    java内存泄露、溢出检查方法和工具

    解决内存溢出问题通常需要调整JVM的内存参数,如`-Xms`和`-Xmx`用于设置堆的初始大小和最大大小,以及`-XX:MaxPermSize`(对于较旧的JVM版本)或`-XX:MaxMetaspaceSize`(对于Java 8及以上版本)来控制方法区的大小...

    Java-JVM调优总结

    1. **内存溢出问题**:通过监控工具发现内存使用异常增长,进一步定位到是由于大量临时对象未能被回收导致。解决方法是优化代码逻辑,减少临时对象的创建,并适当增加堆内存大小。 2. **长时间的 Full GC**:分析后...

    解决JAVA内存溢出问题

    在探讨如何解决JAVA内存溢出问题时,我们首先需要理解几个关键的概念,...通过上述详细的分析和解释,相信读者已经对如何解决JAVA内存溢出问题有了更全面的理解和掌握,能够更加自信地应对和解决实际开发中的相关挑战。

    eclipse内存溢出的解决办法.txt

    在Java应用中,“内存溢出”通常指的是Java虚拟机(JVM)在运行过程中,因为可用内存空间不足而引发的一种错误。这种错误通常会以“OutOfMemoryError”的形式展现出来。对于Eclipse而言,其本身就是一个基于Java的...

    37-JVM优化1

    在Java开发中,JVM(Java Virtual Machine)的优化是提升应用程序性能的关键环节。本文主要围绕HotSpot JVM的优化展开,旨在防止出现内存溢出错误和StackOverflowError异常,以及减少频繁的垃圾回收对程序响应的影响...

    myeclipse-tomcat jdk内存溢出

    在使用MyEclipse进行Java Web开发时,经常会遇到Tomcat服务器启动后出现JVM内存溢出的问题。这种情况通常表现为应用程序运行过程中突然崩溃,并伴随着错误提示:“OutOfMemoryError”。这种错误不仅会影响开发效率,...

Global site tag (gtag.js) - Google Analytics