
Myeclipse与Tomcat环境下解决OutOfMemoryError: PermGen space的痛苦与收获
下载需积分: 10 | 78KB |
更新于2024-09-12
| 23 浏览量 | 举报
收藏
在IT开发过程中,遇到"OutOfMemoryError: PermGen space"错误是常见的挑战,尤其是在使用Myeclipse 8.5和Tomcat 6.x的环境中。该错误通常表示程序在运行时无法分配足够的永久代(PermGen)内存,这对于存储类加载器的元数据和常量池等非常关键。解决这个问题的过程往往充满摸索,特别是对于初次遇到该问题的开发者来说。
首先,解决这类问题的关键在于理解PermGen空间的工作原理以及它与堆内存的区别。PermGen是Java虚拟机(JVM)的一部分,专门用于存放持久类、常量池和编译后的代码。如果应用程序频繁创建大量类或者使用了大量的静态字段,PermGen空间可能会迅速耗尽。
网络上充斥着各种解决 PermGen space溢出的方法,但并非所有建议都适用。作者提到尝试过文档《Linux和Windows修改Java虚拟机内存大小》中的方法,但未能解决问题。这表明直接调整JVM的内存参数可能不足以解决PermGen溢出,因为 PermGen的大小不是通过-Xmx或-Xms这样的堆内存选项来配置的。
作者使用JDK自带的jconsole工具对JVM内存进行监控,发现PermGen的最大值为64MB,这是默认设置。即使设置了更大的 PermSize 和 MaxPermSize 参数,但在Myeclipse中启动Tomcat时,这些配置并未生效。这是因为Myeclipse可能有自己的配置机制,或者这些设置没有正确地传递给JVM。
解决这个问题的步骤包括:
1. **理解配置**:确保对 PermGen 的特殊配置有所了解,如`XX:PermSize` 和 `XX:MaxPermSize`,它们分别设置初始和最大PermGen空间大小,而不是堆内存大小。
2. **检查启动参数**:在Myeclipse的catalina.bat文件中,需要确保设置正确。作者增加了`-XX:PermSize`和`-XX:MaxPermSize`的值,并且建议在`setJAVA_OPTS`变量后添加这些选项,以确保它们被JVM识别。
3. **排查Myeclipse设置**:Myeclipse可能有自己的内存管理配置,确认是否在IDE内部进行了额外的限制。有时,可能需要在Myeclipse的配置文件或首选项中找到并调整相应的设置。
4. **验证配置生效**:使用jconsole或其他JVM监控工具持续观察,确保新的配置已经被应用到正在运行的Tomcat实例中。
5. **性能分析**:如果以上步骤无效,可能需要进一步分析应用程序的内存使用情况,找出导致PermGen溢出的具体原因,例如是否存在大量的类创建或循环引用等问题。
总结来说,解决"OutOfMemoryError: PermGen space"需要深入理解JVM内存管理,特别是在PermGen空间的配置和监控上。通过细致的排查和调整,才能找到问题的根源并成功解决问题,尽管这个过程可能会显得痛苦,但最终找到解决方案后的成就感则是值得的。
相关推荐

















pengyonghai
- 粉丝: 2
最新资源
- Hyvly-crx插件:实时聊天功能扩展
- 打造Android风格的九宫格解锁功能教程
- 在线市场网站设计挑战与用户基本需求分析
- UC GIS聚会日程信息大全
- PHP Web应用快速部署教程:使用Docker容器化技术
- 基于React和Node.js的全栈应用教程
- IPRaven-crx插件:IP地址追踪与白名单更新工具
- LMV Developer Tools扩展:简化大型模型查看器开发
- Owneeed on live-crx插件:流媒体直播新体验
- 小哦许愿墙v1.0系统:安全简洁的ASP源码下载
- Mirumir-crx插件:新闻阅读的民族主义陈词滥调替代工具
- Shipwright与cosign结合:容器图像签名示例教程
- Bootstrap 4主题定制与GitHub Pages集成
- Clintool-crx插件:在Gmail中安全发送机密邮件
- Sur-Écoute CRX插件:法律信息下的大规模监控解决方案
- 探索Monoid在数据处理中的应用与过滤技术
- Project Makeover Hack Cheats:Chrome扩展美化与功能增强
- GitHub Pages与Markdown的结合使用:Coursera考试资料整理
- Tweet The Web-chrome插件:在任何网页轻松发表评论
- Django初学者指南:从搭建环境到运行PS课程示例项目
- GitHub-crx插件:隐藏WIP状态的PR合并请求
- NuScreenSharing扩展:实现视频通话中的屏幕共享
- Hivemind团队服务器前端Web GUI界面简介
- DealDash拍卖跟踪插件:简化竞拍过程