今天有个同事问我一个问题,他的Eclipse经常出现OutOfMemoryError,从原理上说,有两种原因会导致客户机的Eclipse内存溢出:
1.Ecplise因为是ide,涉及大量的class的重新build,每次build,classloader会重新加载此class,而老的class,没有被卸载,同时JVM不会垃圾回收此class(据说是因为classloader本身有内存泄露,也许是classloader仍然对改class进行了引用,因此,这类class不会被unload),因此,可以设置较大的PermSize,因为Class是分配在Perm space里面的。但是这种办法只能延长OutOfMemory的时间,因为class的重新装载迟早会造成永久代的内存溢出,这种情况在产品线上应该不会出现,一般产品线上重新部署程序时,都要求重启JVM的,所以问题不大。
2.因为eclipse经常跟本地的其它应用程序一起运行,OS的内存会把分配给其它应用程序,为了避免应用程序抢走JVM的内存,通常我们在设置堆大小时,有初始化堆的大小和最大堆的大小,在JVM启动时,JVM会向OS申请初始化堆大小的内存空间,只有当堆内存不足时,JVM才会想OS请求内存直到Xmx为止,当内存被其它应用程序占用时,JVM往往申请不到内存,这很容易堆内存溢出,因为,此时堆大小已经不能再扩展了。因此,所以把xmx=xmn设置成一样大,可以避免内存被其它进程抢走。
综上所述,如果eclipse OutOfMemoryError,推荐使用下列配置(具体大小可以视PC的配置,笔者的机器配置为2G内存,双核):
#-showsplash
#org.eclipse.platform
#-framework
#plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar
-vmargs
-Xms512M
-Xmx512M
-XX:PermSize=150M
-XX:MaxPermSize=150M
这个文件在eclipse安装目录下eclipse.ini文件。
分享到:
相关推荐
由于需要使用ANT编译的代码比较多,特别是在第一次变异的时候,会出现OutOfMemory错误。并提示更改ANT_OPTS设定。
Eclipse Memory Analyzer 是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减少内存占用。 使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象...
MAT Eclipse Memory Analyzer 中文文档 PDF 共 93 页 MAT Eclipse Memory Analyzer 中文文档 PDF 共 93 页
当我们使用Eclipse运行TOMCAT时,可能会出现"a java exception has occurred"的错误信息,本文将介绍解决该问题的办法。 一、双击TOMCAT SERVER出现"a java exception has occurred"的原因 当我们在Eclipse中双击...
Eclipse--Memory-Analyzer中文教程,配合博客原文使用
Eclipse下配置tomcat,并不是tomcat插件,寻求tomcat插件配置的朋友可以不用看了,tomcat配置好以后可能出现http://localhost:8080/页面打不开,出现404错误的情况,这里面也有说明如何解决,这是我在做项目过程中...
Eclipse Memory Analyzer是一款基于Eclipse的内存分析工具,mac版,不需要安装Eclipse,可以直接运行,用来分析内存泄漏等问题
eclipse提示CreateProcess error=87错误的解决方法,有可能是因为因为eclipse里设置的某个环境变量路径太长太深导致。
eclipse出现HTTP 500服务器内部错误,我们的代码程序并没有错误,选择一个外部浏览器却可以正常运行。那么,我们应该怎样选择一个外部服务器呢?
Eclipse Memory Analyzer mac 版本 1.8.1 & 安装使用指南
20140927Eclipse错误日志
Eclipse Memory Analyzer 是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减 少内存占用。 使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对 ...
有时struts资源文件添加中文保存时会eclipse出现Some characters cannot be mapped using 'ISO-8859-1' character encoding错误不能保存 解决办法
MAT是一个eclipse的插件,上手起来比较快。它能够快速的分析dump文件,可以直观的看到各个对象在内存占用的量大小,以及类实例的数量,对象之间的引用关系,找出对象的GC Roots相关的信息,此外还能生成内存泄露报表...
eclipse报错 eclipse启动报错解决方法 eclipse报错 eclipse启动报错解决方法
对 eclipse 开发时 遇到的 maven 配置的问题 做出了处理
Eclipse快捷键大全.out
Eclipse中启动Tomcat服务器产生错误的原因及解决方案
EclipseMemoryAnalyzer-x86_64,MemoryAnalyzer-1.7.0.20170613-win32.win32.x86_64.zip
Eclipse没反应或反应慢的解决办法 在eclipse中导入了一个很大的项目,然后就觉得eclipce变的好慢,动不动还会挂掉~ 这时候只要在eclipse的安装目录下,打开eclipce.ini文件,把默认的内存大小很改了,就应该能解决...