最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
MyEclipse内存溢出(OOM)的解决方案:调整JVM启动参数与内存优化
时间:2026-06-30 11:44:52 编辑:袖梨 来源:一聚教程网
MyEclipse启动时报java.lang.OutOfMemoryError: PermGen space,是JDK 7及更早版本因永久代空间不足所致,需在Preferences→MyEclipse→Servers→Tomcat→JDK的VM参数中设置-XX:PermSize=512m -XX:MaxPermSize=1024m;JDK 8+则应改用-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m,且必须配置在MyEclipse界面而非eclipse.ini或catalina.bat中。
MyEclipse启动时就报 java.lang.OutOfMemoryError: PermGen space
这是 JDK 7 及更早版本的典型现象,本质是方法区(永久代)被类加载器反复加载的 class 填满,尤其在频繁热部署、多项目共存或使用大量反射框架(如 Spring)时极易触发。
关键不是堆内存不够,而是 -XX:MaxPermSize 设置太小。MyEclipse 自身插件多、Tomcat 加载多个 WebApp,256m 往往撑不住。
- 必须改
Window → Preferences → MyEclipse → Servers → Tomcat x.x → JDK → Optional Java VM arguments,填入:-XX:PermSize=512m -XX:MaxPermSize=1024m - 如果用的是 JDK 8+,这个错误不会出现——
PermGen已被Metaspace替代,此时要换参数:-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m - 别只改
eclipse.ini或catalina.bat:IDE 启动 Tomcat 时,优先读取的是 MyEclipse 界面里配置的 JVM 参数,其他地方改了也无效
运行项目时突然抛 java.lang.OutOfMemoryError: Java heap space
堆内存耗尽,说明对象分配太多、GC 清不掉,或者初始堆太小导致频繁扩容再 GC,最终失败。
常见诱因是:SSM 项目里没分页查数据库、List 不断 add 对象没清空、缓存未设上限、上传大文件未流式处理。
-
-Xms和-Xmx必须设为相同值,比如-Xms1024m -Xmx1024m,避免运行中反复调整堆大小带来的开销和碎片 - 物理内存 8GB 的机器,
-Xmx别超过2048m;超过会挤占系统和其他进程资源,反而引发卡顿甚至崩溃 - 若用了
-Xmn(新生代大小),建议设为-Xmx的 1/3~1/4,比如-Xmx2048m对应-Xmn512m,太小会导致 Minor GC 频繁,太大则老年代空间不足
MyEclipse 自身卡死、编辑器响应慢、打开项目就崩溃
这不是项目的问题,是 MyEclipse 运行环境(即它自己的 JVM)内存不足。它和你跑的 Tomcat 是两个独立 JVM 进程。
症状包括:打开 .java 文件卡顿数秒、保存时报错、控制台日志刷屏但无响应、新建项目失败。
- 修改
MyEclipse 安装目录/eclipse.ini,重点调-vmargs下的参数:-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m -
-XX:+UseG1GC可加可不加;G1 在大堆(>4GB)下优势明显,但 MyEclipse 自身堆一般不到 2GB,CMS 或默认 GC 足够 - 删掉 ini 文件里重复的
-Xmx行(常见于手动改过多次的人),JVM 只认最后一个生效,重复反而容易写错单位(比如漏写m)
改完参数还是 OOM?先确认到底是谁的内存爆了
很多人调了半天,发现根本没生效——因为压根没搞清当前 OOM 发生在哪一个 JVM 上。
MyEclipse 环境里至少存在三个独立 JVM:MyEclipse 主进程、内嵌 Tomcat 进程、你用 maven build 时起的独立 JVM。每个都要单独配参数。
- 看错误堆栈最顶部的线程名:
main线程出错,一般是 Tomcat;Worker-xx或没线程名但含org.eclipse包路径,就是 MyEclipse 自身 - 用
jps -l命令列出所有 Java 进程 PID,再用jstat -gc <pid>查对应堆使用率,比看日志更准 - 如果改了 MyEclipse 的
eclipse.ini没反应,检查是否用了-vm指向了另一个 JDK,此时eclipse.ini的-vmargs可能被忽略
相关文章
- 明末渊虚之羽防具有哪些排名 07-02
- 如何获取和平精英皮肤照片 07-02
- 空洞骑士丝之歌如何获取制造金属 07-02
- 鱼骨头螃蟹阵容如何搭配 07-02
- 战魂旅人玩法是什么 07-02
- 无限暖暖祝你幸福发饰如何获取 07-02