最全的Eclipse 启动优化、内存优化

来源:互联网 发布:matlab 离散数据 fft 编辑:程序博客网 时间:2024/05/15 06:06

最全的Eclipse 启动优化、内存优化

  -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 

  这里有几个问题: 

  1. 各个参数的含义什么? 

  2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动? 

  3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置? 

  下面我们一一进行回答 

  1. 各个参数的含义什么? 

  参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。 

  堆(Heap)和非堆(Non-heap)内存 

  按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 

  堆内存分配 

  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内存限制(最大值) 

  首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就 32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G- 2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。 

  2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动? 

  通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因: 

  1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize; 

  2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。 

  3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置? 

  那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则: 

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

-vm 
C:Javajre1.6.0binjavaw.exe 

  按照上面所说的,最后参数在eclipse.ini中可以写成这个样子: 

-vmargs 
-Xms128M 
-Xmx512M 
-XX:PermSize=64M 
-XX:MaxPermSize=128M 

  实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。 

  另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的: 

-showsplash 
org.eclipse.platform 
--launcher.XXMaxPermSize 
256m 
-vmargs 
-Xms40m 
-Xmx256m 

  其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。

 

点击查看更多

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 信用卡丢了被刷怎么办 ins注册不了怎么办安卓 偷玩电脑被发现怎么办 做作业不认真的怎么办 老人脑供血不足怎么办 哺乳期吃了辣的怎么办 孕32周胎位臀位怎么办 怀孕32周胎位不正怎么办 7个月胎位不正怎么办 胎心监护老不过怎么办 8个月了胎位不正怎么办 怀孕八个月了胎位不正怎么办 怀孕八个月胎位不正怎么办 欠债的人跑了怎么办 赌博输了100万怎么办 我赌博输了4万怎么办 办80张信用卡怎么办的 19岁负债十几万怎么办 欠了十几万该怎么办 网贷负债十几万怎么办 赌博欠了十几万怎么办 欠了网贷跑了会怎么办 欠银行钱还不起怎么办 欠小额贷款公司的钱还不上怎么办 负债30万没工作怎么办 华为p9耗电太快怎么办 酷派手机反应慢怎么办 网上买手机被骗了怎么办 买手机贵了怎么办12315 在手机店被骗了怎么办 在转转上被骗了怎么办 微信被骗了800怎么办 苹果6被偷走该怎么办 苹果7被偷走该怎么办 月经量突然少了怎么办 我月经老是不来怎么办 月经不来3个月怎么办 月经推迟3个月怎么办 乙肝五项25阳怎么办 乙肝五项25阳性怎么办 流浓鼻涕怎么办速效办法