myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法

简介: 摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考 PermGen space是啥就不说了,网上找找大堆,感觉也没必要记这些个概念 问题的根源就是JVM的内存不够用了...

摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误
在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考

PermGen space是啥就不说了,网上找找大堆,感觉也没必要记这些个概念

问题的根源就是JVM的内存不够用了!!!
解决方法:

********************************************************************************************************************
如果是在IDE中开发项目,以MyEclipse为例,
Window->Preferences->MyEclipse->Servers->Tomcat x.x->JDK->Optional Java VM arguments:

-Xms256m
-Xmx256m
-XX:PermSize=512M
-XX:MaxPermSize=512m

 

根据情况可以更改指定的内存大小。

****************************************************************************************************
-Xms256m:表示JVM Heap(堆内存)最小尺寸256MB,初始分配
-Xmx256m:表示JVM Heap(堆内存)最大允许的尺寸512MB,按需分配。
说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。


-XX:PermSize=512MB 最小尺寸,初始分配
-XX:MaxPermSize=512MB 最大允许分配尺寸,按需分配,过小会导致:java.lang.OutOfMemoryError: PermGen space
说明:PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)的大小,如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。


MaxPermSize缺省值和-server -client选项相关。
-server选项下默认MaxPermSize为64m
-client选项下默认MaxPermSize为32m
****************************************************************************************************

如果不是在IDE中开发项目,则需要更改tomcat的配置文件:

Windows环境下:%tomcat_home%/bin/catalina.bat文件:
在最开始的位置加上:

set JAVA_OPTS=-server -Xms256m -Xmx256m -XX:PermSize=512M -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit %JAVA_OPTS%

  这样就搞定了。

注意:如果只更改catalina.bat文件,而是通过IDE启动tomcat,则IDE会忽略掉catalina.bat文件中设置的参数,所以最好就是在2处都进行更改。

********************************************************************************************************************
Linux环境下:修改catalina.sh文件,在
cygwin=false
之前添加

JAVA_OPTS="-server -Xmx256m -Xms256m -XX:PermSize=512M -XX:MaxPermSize=512m"

  

目录
相关文章
|
2月前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
43 0
|
29天前
|
存储 Java 编译器
Java内存区域与内存溢出异常 - 运行时数据区
【8月更文挑战第2天】Java运行时数据区包括:1) 程序计数器:记录线程执行字节码的行号,线程私有;2) Java虚拟机栈:描述方法执行的内存模型,线程私有,深度过大抛出`StackOverflowError`;3) 本地方法栈:服务于Native方法,线程私有;4) Java堆:所有线程共享,对象实例在此分配内存;5) 方法区:存储类信息、常量等数据;6) 运行时常量池:方法区的一部分,存放字面量和符号引用。不当使用如无限创建对象或过度递归调用会导致各种内存溢出错误。
|
2月前
|
Arthas 存储 Java
JVM内存问题之Linux使用ptmalloc2导致的JNI内存溢出问题如何解决
JVM内存问题之Linux使用ptmalloc2导致的JNI内存溢出问题如何解决
|
2月前
|
监控 Java 运维
开发与运维收集问题之jstat命令查看JVM垃圾回收情况如何解决
开发与运维收集问题之jstat命令查看JVM垃圾回收情况如何解决
19 1
|
2月前
|
Java 编译器 运维
开发与运维测试问题之在JVM中方法区也被称之为什么如何解决
开发与运维测试问题之在JVM中方法区也被称之为什么如何解决
18 1
|
2月前
|
Java Windows
Java演进问题之JVM在内存返还策略上会左右为难如何解决
Java演进问题之JVM在内存返还策略上会左右为难如何解决
|
2月前
|
缓存 Java 编译器
Java演进问题之JVMCI JIT编译器与JVM的交互如何解决
Java演进问题之JVMCI JIT编译器与JVM的交互如何解决
|
24天前
|
缓存 Java Python
Pyglet 内存泄漏 & 页面错误 以及(可能)有用的解决方法
【8月更文挑战第6天】使用`Pyglet`可能遭遇内存泄漏与页面错误。内存泄漏常见原因包括未释放资源、循环引用及频繁创建销毁对象。应确保资源适时释放、避免循环引用并复用对象。页面错误通常源于内存访问越界、资源加载失败或硬件兼容性问题。利用内存分析与调试工具可帮助诊断并解决问题。
|
2月前
|
存储 算法 Java
(四)JVM成神路之深入理解虚拟机运行时数据区与内存溢出、内存泄露剖析
前面的文章中重点是对于JVM的子系统进行分析,在之前已经详细的阐述了虚拟机的类加载子系统以及执行引擎子系统,而本篇则准备对于JVM运行时的内存区域以及JVM运行时的内存溢出与内存泄露问题进行全面剖析。
|
2月前
|
缓存 算法 Java
JVM内存溢出(OutOfMemory)异常排查与解决方法
JVM内存溢出(OutOfMemory)异常排查与解决方法
下一篇
云函数