`
handonghandong
  • 浏览: 89044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

eclipse自动编译后,内存不足导致退出

阅读更多
今天Eclipse当我部署完项目后,保存后自动编译,结果显提示我内存不足,当我点击确定后,继续部署工作空间后,eclipse要求退出保存工作空间,我试了几次,都是这个结果,我强制不退出后,每次保存都是有问题,看看部署状态,Tomcat已经提示出现问题了,我猜到可能是JVM内存的问题,于是找到exlipse.ini,修改为:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M

把了解的总结下:
参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。
堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。设置VM参数导致程序无法启动主要有以下几种原因:
1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。
参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
没有遵守eclipse.ini文件的设置规则:

参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:

-vm
C:\Java\jre1.6.0\bin\javaw.exe

Eclipse压缩包中自带的eclipse.ini文件内容是这样的:

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。
补充下啊,在Windows - Preferences --> General--> Startup and Shutdown 去掉不需要的插件,对于Eclipse启动运行性能有帮助的
如果都尝试了,结果还是不可以,那就删掉.metadata文件夹,重新部署Eclipse工作空间
0
0
分享到:
评论

相关推荐

    java问题定位技术

    4. **资源不足等导致的性能下降分析**: - 检查是否有大量线程处于`TIMED_WAITING`或`WAITING`状态。 - 分析线程等待的原因,比如I/O操作、数据库访问等。 5. **线程不退出导致的系统挂死分析**: - 寻找处于非...

    javase学习总结

    ### JavaSE 学习总结 #### 一、Java 基础环境介绍 ...- **触发时机**:当系统内存不足时,GC 会被自动触发。 - **手动触发**:可以通过 `System.gc()` 方法尝试手动触发 GC,但并不保证一定能立即执行。

    Android Studio使用中的问题及解决方法.pdf

    ### 问题1:SDK自动更新导致启动慢 Android Studio默认会在启动时检查SDK更新。如果网络环境不佳,这会显著延长启动时间。解决方法是在启动Android Studio之前,找到`idea.properties`文件,添加一行`disable....

    code-question:找出这段代码中的错误。 请不要公开评论(尤其是在这里),因为这对新人来说是一个挑战

    10. **内存泄漏**:虽然Java有垃圾收集机制,但如果创建了大量无法释放的对象,可能会导致内存泄漏。检查并优化对象的生命周期,确保不再使用的对象能被及时回收。 以上只是部分可能的错误类型,实际问题可能更复杂...

    android创新实验报告.docx

    - **难度调整**:随着得分的提高,游戏速度自动加快,增加挑战性。 ##### 2.2 实验流程(步骤) 1. **Java编程语言基础**:熟悉Java基本语法与数据结构。 2. **Android软件开发环境搭建**:安装Eclipse、Android ...

    java学习笔记

    - Java不允许存在无法执行到的语句,这会导致编译错误或运行时异常。 ```java while (true) {} while (true) {} // 第二个`while`循环无法执行 ``` #### 十、switch语句支持的数据类型 - **历史演变**: - ...

    Java基础知识

    - 使用未初始化的变量会导致编译错误。 - **1.4.8 在声明变量时初始化** - 可以在声明变量的同时为其赋初值:`int a = 10;` - **1.4.9 在第一次使用变量前初始化** - 如果变量在声明时未初始化,则应在首次使用...

    Java基础知识练习题

    - **问题解析**:对于 `short` 类型的自增运算,直接使用 `+` 会导致编译错误,因为 `+` 运算符默认将 `short` 转换成 `int` 类型。 - **代码示例**: ```java short s1 = 1; s1 = (short)(s1 + 1); // 显式类型...

    教学实施大纲(javaWEB方向)

    - **泛型在集合中的应用**:泛型允许在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。 **2. 实用类** - **枚举**:枚举是一种特殊的类,用于表示一组固定的常量值。 - **包装类的...

    java源码包---java 源码 大量 实例

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    java源码包2

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    java源码包3

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    java源码包4

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏 Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分...

Global site tag (gtag.js) - Google Analytics