??xml version="1.0" encoding="utf-8" standalone="yes"?>
作? Jet Mah from Java?/a>
声明: 可以非商业性Q意{? 转蝲时请务必以超链接形式标明文章原始出处、作者信息及(qing)此声明!
在目前广泛用的苏沈雨制作的《CSS 2.0中文手册》的基础上增加了(jin)索引功能Q具体信息及(qing)下蝲误?CSS Handbook.
MyEclipse功能非常的强大,现在基本是用Eclipse开发JavaEE的必备插件了(jin)。但是巨大的MyEclipse也导致Eclipse启动的速度加慢Q另外开发的q程中有时候容易造成界面“假死”的状c(din)?/p>
今天介绍几个优化MyEclipse的方?/p>
1. 加大JVM的非堆内存,具体的做法和原因参考我前一文章?a >由MyEclipse内存?sh)谈谈JVM内存?/a>
2. 去除不需要加载的模块
一个系l?0%的功能往(xin)往(xin)能够满80%的需求,MyEclipse也不例外Q我们在大多数时候只需?0%的系l功能,所以可以将一些不使用的模块禁止加载启动。通过Windows - Preferences打开配置H口Q依ơ选择左侧的General - Startup and ShutdownQ这个时候在右侧显C出?jin)Eclipse启动时加载的模块Q可以根据自q实际情况去除一些模块?/p>
3. 取消MyEclipse在启动时自动验证目配置文g
默认情况下MyEclipse在启动的时候会(x)自动验证每个目的配|文Ӟq是一个非常耗时的过E,可以在PreferencesH口依次选择MyEclipse - ValidationQ然后在右侧的Validator列表中只保留 Manual 就可以?jin)。如果需要验证的时候只需要选中文gQ然后右键选择 MyEclipse - Run Validation可以了(jin)?/p>
通过上面的几个步骤可以有效优化MyEclipse的启动速度和运行效率,如果你还有新的方法可以回?
参考资料:(x)
让Eclipse快速启动的Ҏ(gu)
如果没有q行讄的话Q在使用MyEclipse的经常出现如下图所C内存(sh)的提示?br />
提示中说的很明白Q?#8220;MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains.”意思是说当前只有小?%的非堆内存是I闲的。所以我们只要将q个D|大一些就可以?jin)?/p>
提示中给Z(jin)讄的参敎ͼ(x)
q里有几个问题:(x)
1. 各个参数的含义什么?
2. Z么有的机器我?Xmx?XX:MaxPermSize都设|ؓ(f)512M之后Eclipse可以启动Q而有些机器无法启动?
3. Z上面的参数写入到eclipse.ini文gEclipse没有执行对应的设|?
下面我们一一q行回答
1. 各个参数的含义什么?
参数?vmargs的意思是讄JVM参数Q所以后面的其实都是JVM的参C(jin)Q我们首先了(jin)解一下JVM内存理的机Ӟ然后再解释每个参C表的含义?/p>
?Heap)和非?Non-heap)内存
按照官方的说法:(x)“Java 虚拟机具有一个堆Q堆是运行时数据区域Q所有类实例和数l的内存均从此处分配。堆是在 Java 虚拟机启动时创徏的?#8221;“在JVM中堆之外的内存称为非堆内?Non-heap memory)”。可以看出JVM主要理两种cd的内存:(x)堆和非堆。简单来说堆是Java代码可及(qing)的内存,是留l开发h员(sh)用的Q非堆就是JVM留给自己用的Q所以方法区、JVM内部处理或优化所需的内?如JIT~译后的代码~存)、每个类l构(如运行时常数池、字D和Ҏ(gu)数据)以及(qing)Ҏ(gu)和构造方法的代码都在非堆内存?sh)?堆内存分?/strong>
JVM初始分配的内存由-Xms指定Q默认是物理内存?/64QJVM最大分配的内存?Xmx指定Q默认是物理内存?/4。默认空余堆内存于40%ӞJVM׃(x)增大堆直?Xmx的最大限ӞIZ堆内存大?0%ӞJVM?x)减堆直?Xms的最限制。因此服务器一般设|?Xms?Xmx相等以避免在每次GC 后调整堆的大?非堆内存分配
JVM使用-XX:PermSize讄非堆内存初始|默认是物理内存的1/64Q由XX:MaxPermSize讄最大非堆内存的大小Q默认是物理内存?/4?JVM内存限制(最大?
首先JVM内存限制于实际的最大物理内?废话Q呵?Q假讄理内存无限大的话QJVM内存的最大D操作pȝ有很大的关系。简单的说就32位处理器虽然可控内存I间?GB,但是具体的操作系l会(x)l一个限Ӟq个限制一般是2GB-3GBQ一般来说Windowspȝ下ؓ(f)1.5G-2GQLinuxpȝ下ؓ(f)2G-3GQ,?4bit以上的处理器׃?x)有限制了(jin)?
2. Z么有的机器我?Xmx?XX:MaxPermSize都设|ؓ(f)512M之后Eclipse可以启动Q而有些机器无法启动?
通过上面对JVM内存理的介l我们已l了(jin)解到JVM内存包含两种Q堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作pȝ。所以说讄VM参数DE序无法启动主要有以下几U原因:(x)
1) 参数?Xms的值大?XmxQ或?XX:PermSize的值大?XX:MaxPermSizeQ?/p>
2) -Xmx的值和-XX:MaxPermSize的d过?jin)JVM内存的最大限Ӟ比如当前操作pȝ最大内存限Ӟ或者实际的物理内存{等。说到实际物理内存这里需要说明一点的是,如果你的内存?024MBQ但实际pȝ中用到的q不可能?024MBQ因为有一部分被硬件占用了(jin)?
3. Z上面的参数写入到eclipse.ini文gEclipse没有执行对应的设|?
那ؓ(f)什么同L(fng)参数在快h式或者命令行中有效而在eclipse.ini文g中是无效的呢Q这是因为我们没有遵守eclipse.ini文g的设|规则:(x)
参数形如“??#8221;q种形式Q中间有I格的需要换行书写,如果g有空格的需要用双引号包括v来。比如我们?vm C:\Java\jre1.6.0\bin\javaw.exe参数讄虚拟机,在eclipse.ini文g中要写成q样Q?/p>
- -vm
- C:\Java\jre1.6.0\bin\javaw.exe
按照上面所说的Q最后参数在eclipse.ini中可以写成这个样子:(x)
实际q行的结果可以通过Eclipse?#8220;Help”-“About Eclipse SDK”H口里面?#8220;Configuration Details”按钮q行查看?/p>
另外需要说明的是,Eclipse压羃包中自带的eclipse.ini文g内容是这L(fng)Q?/p>
其中–launcher.XXMaxPermSizeQ注意最前面是两个连接线Q跟-XX:MaxPermSize参数的含义基本是一L(fng)Q我觉得唯一的区别就是前者是eclipse.exe启动的时候设|的参数Q而后者是eclipse所使用的JVM中的参数。其实二者设|一个就可以?jin),所以这里可以把–launcher.XXMaxPermSize和下一行?注释掉?/p>
参考资料:(x)
JDK5.0垃圾攉优化?#8211;Don’t Pause
提问Q如何超JVM内存限制Q?/a>
MemoryMXBean (Java 2 Platform SE 5.0)
MyEclipse/Eclipse的内存(sh)化与内存?sh)的解军_?/a>
eclipse.ini文g的问?/a>
eclipse Z么报?/a>