`

Eclipse中存在内存泄露

 
阅读更多

这一段时间,Eclipse总是死掉,几乎是稍微操作快一点就会死掉,几分钟一次,搞得人郁闷至极。浪费了不少时间,在网上搜了下,看到很多朋友也出现类似的情况,在网上求救,但是网上的办法都只是说通过修改eclipse.ini文件来加大Eclipse的内存。 

    自己试了下,发现不管用。今天,又死掉了,不过爆出一个经常出现的错误,大意是:permgen space导致内存溢出。实在忍无可忍,上网一搜,发现网络真是个好东西,尤其是对我们这种自学者而言,无疑是授业解惑的良师益友。

    这里总结一下自己的经验和网友的经验,希望能够对受此问题折磨的朋友有所参考价值。

解决办法如下:

eclipse.ini配置文件中加上以下两行
-XX:PermSize=128M 
-XX:MaxPermSize=128M

加上上2行后,我的eclipse.ini文件如下所示:

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
-vmargs
-Xms256m
-Xmx512m
-XX:PermSize=128M 
-XX:MaxPermSize=128M

这里的内存大小根据自己的物理内存情况来决定吧。

从网上的资料看PermSize大一点肯定更好,而且最好是设置PermSize和MaxPermSize一样大。理由如下:
        PermSize 和MaxPermSize如果设置为相同还可以在一定程度上提高性能,因为,PermSize在不断的变化中会需要转移其中的数据。如果固定了以后,则可以减少每次扩大PermSize带来的性能损失。

 

1、PermGen space简介

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。

说说为什么会内存益出:
(1)这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同。
(2) GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多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 文档重复占用内存。

分享到:
评论

相关推荐

    eclipse启动tomcat内存泄漏解决

    在Eclipse环境下启动Tomcat时,如果配置不当或者代码存在缺陷,也可能导致内存泄漏问题。 #### 三、Eclipse启动Tomcat内存泄漏常见原因 1. **配置文件设置不当**:启动参数中的`-Xms`和`-Xmx`分别表示JVM的初始堆...

    Eclipse监视内存插件(Kyrsoft)

    总的来说,"Eclipse监视内存插件(Kyrsoft)"是Eclipse开发者不可或缺的辅助工具,它提升了开发过程中的内存管理能力,使得开发者能够更好地理解并控制他们的应用程序对内存的使用,从而提高软件的性能和稳定性。...

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    当应用程序遭遇 `OutOfMemoryError` 异常时,通常意味着程序存在内存管理问题,如内存泄露或内存溢出。本文将详细介绍如何利用 Eclipse Memory Analyzer (MAT) 工具来诊断并解决 Tomcat 服务器上的 Java 应用程序...

    eclipse tomcat启动,内存溢出问题

    ### Eclipse Tomcat 启动时...- 对于频繁发生内存溢出的情况,还需要审查代码逻辑,确保没有内存泄漏的问题存在。 通过以上步骤,可以有效地解决Eclipse中Tomcat启动时出现的内存溢出问题,提高系统的稳定性和性能。

    Eclipse Memory Analyzer 中文文档

    7. **内存泄漏假设测试**:MAT允许用户设定假设条件,模拟如果释放某些对象后内存的变化,以便验证是否存在内存泄露。 8. ** histogram**:MAT的直方图显示了内存中各个类的数量和大小,对于识别哪些类消耗了大量...

    java内存泄漏分析工具

    通过监视应用程序的内存使用情况,开发者可以观察到内存是否持续增长,进而怀疑是否存在内存泄漏。 另一个著名的工具是MAT (Memory Analyzer Tool),它是一款强大的Eclipse插件,专门用于分析HProf内存转储文件。...

    java使用JMAP定位代码内存泄漏在哪

    本文将详细介绍如何使用JMAP工具来定位Java代码中的内存泄漏问题。 首先,理解内存泄漏的概念:内存泄漏是指程序在申请内存后,无法释放已申请的内存空间,一次小的内存泄漏可能并不明显,但随着时间的推移,这些未...

    Eclipse 内存报错

    - **代码优化**:检查代码中是否存在内存泄漏,例如未释放的资源、过度创建的对象等。 4. **其他建议** - **定期更新Eclipse**:官方更新通常包含性能改进和修复,有助于避免内存问题。 - **使用轻量级替代品**...

    基于eclipse的java内存分析工具MAT

    MAT基于Eclipse平台,为Java开发者提供了深入的内存剖析功能,帮助我们理解应用程序的内存消耗,找出可能存在的内存泄漏或过度内存占用的问题。 MAT的核心功能包括: 1. **快照分析**:用户可以生成JVM的堆转储...

    Android App定位和规避内存泄露方法研究

    如果在反复操作后,内存使用量仍持续上升且不会随着GC(垃圾回收)操作而下降,那么很可能存在内存泄露。 2. 使用DDMS工具查看系统内存:DDMS(Dalvik Debug Monitor Server)是Android SDK中用于诊断应用的工具之...

    V8堆快照的内存自动泄漏检测

    Eclipse Memory Analyzer(MAT)是一款强大的Java内存分析工具,但在这里它被应用到V8 JavaScript引擎的上下文中,来检测JavaScript进程中的内存泄漏。 V8是Google开发的一款开源、高性能的JavaScript和WebAssembly...

    eclipse内存溢出报错-解决办法

    2. 重启Eclipse后,你会在底部看到一个名为“Memory”的视图,这里显示了实时的内存使用情况,有助于诊断内存泄露或其他性能问题。 通过上述方法,可以有效地解决Eclipse内存溢出的问题,确保开发环境的稳定性和...

    mat内存分析工具单独软件无需安装-Eclipse Memory Analyzer Version 1.7.0.rar

    2. **对象计数**:MAT可以计算特定类实例的数量,帮助识别可能存在内存泄漏的对象。 3. **大对象检测**:找出占用内存最多的对象,这对于定位内存泄漏的原因非常有帮助。 4. **支配树分析**:通过显示对象之间的...

    内存泄漏分析工具mat

    MAT(Memory Analyzer Tool)是由Eclipse基金会开发的一款强大的Java内存分析工具,它专门用于检测和分析Java应用的内存泄漏问题。 MAT提供了多种功能来帮助开发者诊断和解决内存泄漏问题。首先,MAT可以生成详细的...

    android应用内存泄露

    检测Android应用是否存在内存泄露的方法有很多,其中一种常用的方法是使用Android SDK提供的`procrank`工具。该工具能够帮助开发者查看每个进程占用的内存情况,从而判断是否存在内存泄露。 - **使用procrank** - ...

    Android应用程序内存泄漏的分析.pdf

    标题中提到的是关于“Android应用程序内存泄漏的分析”,这意味着文档的核心内容将集中在分析Android平台下应用程序可能遇到的内存泄漏问题。内存泄漏是Android开发中非常常见且棘手的问题,它发生在一个对象不再被...

    MAT工具(基于Eclipse的内存分析工具)+MAT工具使用说明.docx

    (1)内存泄露报表,自动检查可能存在内存泄露的对象,通过报表展示存活的对象以及为什么他们没有被垃圾收集; (2)对象报表,对可颖对象的分析,如字符串是否定义重了,空的collection、finalizer以及弱引用等。 ...

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

    通过上述步骤,最终确定了内存泄露的根本原因是由于程序中存在某些对象被长期引用,导致无法被垃圾回收。通过对代码进行调整,并优化JVM内存设置,成功解决了内存溢出的问题。 #### 八、扩展阅读 - **Eclipse ...

Global site tag (gtag.js) - Google Analytics