给Eclipse提速的7个技巧html
这篇文章只是关注如何让Eclipse运行得更快。每一个技巧都针对Windows、Linux和MacOS用户详细说明。在使用全部优化技巧以后,Eclipse应该能在10秒内启动,而且比之前运行得更流畅。java
这些技巧不只仅缩短了Eclipse的启动时间,其中大部分技巧还改善了用户体验。例如,更快地打开类、从一处定义跳到另一处、查看javadoc等。但这些提速没法用时间精确的测量,因此对每条技巧带来的提速效果也没有特定的基准。shell
提示:假设你已经装了固态硬盘,而且有至少8Gb的内存。若是没有的话,带来的性能提高可能不大。ubuntu
一般,新版本的JDK和Eclipse都会有性能上的优化。请确保你使用的是64位Eclipse而且使用了Oracle的JDK。对于网络开发,须要使用Eclipse for Java EE而不是Eclipse for Java。缓存
将Eclipse和workspace放在固态硬盘上。启动Eclipse吧。安全
我本身还关闭了自动提示,这样在输入代码时不会拖累我。替代方案是使用Ctrl+Space在须要的使用手动提示。能够经过下面的配置来完成:(译者注:Ctrl+Space?中国人不会答应的)。性能优化
内存盘是将计算机内存的做为虚拟磁盘或硬盘使用。用来加速位于其中的软件的IO性能。内存中建立的RAM盘就像是计算机上的一块硬盘。因为这些内存看成硬盘使用,因此其余程序就不能使用这些内存空间。咱们只是将JDK放到那里,300MB就足够了。bash
警告:不要将任何内容永久性的放到内存盘中,每次重启时,里面的内容都会消失并从新建立。网络
这个连接中有详细的描述。oracle
使用diskutil工具建立内存盘
1. 建立一个新的脚本,例如:~/tools/batch/ramdisk.sh
将其中的x、y、z替换为你的JDK版本:
1
2
3
|
#!/bin/bash
diskutil erasevolume HFS+
'JDK RAMDISK'
`hdiutil attach -nomount
ram
:
//614400
`
cp
-r
/Library/Java/JavaVirtualMachines/jdk1
.x.y_z.jdk
/Volumes/JDKRAMDISK
|
(注意:diskutil指望的参数是512字节扇区的整数倍:对于300MB,应该是300 * 1024 ^ 2 / 512 = 614400)
2. 保存脚本,将其改成可执行模式:
1
|
chmod
755 ~
/tools/batch/ramdisk
.sh
|
运行ramdisk.sh将建立内存盘:
1
2
3
4
5
6
7
|
$ ramdisk.sh
Started erase on disk4
Unmounting disk
Erasing
Initialized
/dev/rdisk4
as a 300 MB
case
-insensitive HFS Plus volume
Mounting disk
Finished erase on disk4 JDKRAMDISK
|
如今用Finder应该能发现一个名为JDKRAMDISK的新设备,其中含有的就是JDK。点击“弹出”按钮能够移除RAM Disk并释放相应的内存。
若是想使用这个技巧,那么每次启动Eclipse都须要有这个内存盘,否则会看到“A Java Runtime … must be available in order to run Eclipse”错误。能够配置系统,用Automator或一个unchtl守护程序确保每次启动时会自动执行ramdisk.sh脚本。
1. 下载并安装名为imdisk的工具
2. 建立一个新的批处理文件,如:C:/tools/batch/ramdisk.bat
将其中的x、y、z替换为你的JDK版本号:
1
2
3
4
5
6
7
8
|
@
echo
Placing JDK on Virtual Disk N:/
@
echo
off
sc config imdisk start= auto
net start imdisk
imdisk -a -t vm -s 300m -m n:
format
n:
/q
/Y
call xcopy C:<path_jdk>jdk1.x.y_z N:jdk1.x.y_z
/S
/E
/Y
/Q
label n: JDK RAMDISK
|
运行ramdisk.bat后,将看到建立了一个名为“JDK RAMDISK”的新磁盘N,其中含有的就是JDK。
3. 确保文件以管理员模式运行。右击文件,选择“属性——兼容性——勾选“以管理员身份运行此程序”。
若是想使用这个技巧,那么每次启动Eclipse都须要有这个内存盘,否则会看到“A Java Runtime … must be available in order to run Eclipse”错误。能够配置系统,将ramdisk.bat脚本放到启动文件夹中。
为了让技巧3可以工做,须要在eclipse.ini文件中添加-vm设置(详见下一节)。
在Eclipse的优化中,这是最使人困惑的地方。网上有海量的文章介绍不一样的配置方案。我只是介绍我本身的配置方案。
明白接下来的工做的含义……
eclipse.ini中有两种类型的属性:与Eclipse应用相关的属性;与JVM相关的属性。这些选项具体取决于JDK和Eclipse的版本。下面的是我在网上找到的最新的列表。
要理解这些属性,首先要了解Oracle JVM的内存布局。通常来讲,JVM内存分红几个内存池,对象根据不一样存在时间位于不一样的内存池中。
若是你对此感兴趣,Oracle含有一篇很不错的关于配置垃圾收集的文章,其中详细介绍了全部这些空间的用途。
在eclipse.ini中,能够控制每一个内存池的大小。下面的配置是针对个人16G内存设定的,但也可用于8G的内存。
使用位于RAM Disk中的JDK(使用在步骤三中的版本号):
1
|
-vm
/Volumes/JDKRAMDISK/jdk1
.x.y_z.jdk
/Contents/Home/
|
1
|
-vm N:
/jdk1
.x.y_z
/bin
|
禁用字节码验证(有风险)
这是跳过了class文件的验证(class文件的验证的信息参见这里),意味着JVM不会检测使用的class文件。若是使用的class文件被修改过,会有安全风险。本身承担风险(我仅仅是玩的时候用,不会在工做中启用这个选项)。
打开编译器性能优化
1
|
-XX:+AggressiveOpts
|
增长永生代空间(分配新对象的地方)(译者注:在JDK 8中,取消了永生代)
1
2
|
-XX:PermSize=512m
-XX:MaxPermSize=512m
|
增长最小最大堆的空间(含有新生代和年老代)
1
2
|
-Xms2048m
-Xmx2048m
|
为新生代增长堆的大小
1
|
-Xmn512m
|
为每一个线程设置栈大小
1
|
-Xss2m
|
调整垃圾收集
1
|
-XX:+UseParallelOldGC
|
最后,这里列出其余可能在网上看到的选项。就我我的而言,这些选项都没有加速效果,因此仅仅是用来参考。读者能够在网上找到相应的文档,来了解并使用对应的选项:
1
2
3
4
5
6
7
8
|
-XX:MaxGCPauseMillis=10
-XX:+UseG1GC
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+CMSIncrementalPacing
-XX:+UseFastAccessorMethods
-server
|
最后,移除全部重复的选项,包括launcher.XXMaxPermSize,由于启用了XX:MaxPermSize选项后,这个选项就没用了。
若是有杀毒软件,要确保这些软件不会检查代码文件夹。将JDK、Eclipse、你的.m2/jar代码库和代码文件夹添加到杀毒软件的白名单。
这是我的偏好。有些人喜欢将Eclipse与团队协同工具结合起来。就我我的而言,这样速度很慢,我宁愿Eclipse专一于开发工做,而不是同时作许多事。我还很是喜欢SVN/GIT命令行。无论怎么说,我把这些工具从Eclipse中移除,发现响应速度更快了。
Eclipse的一个有点是其中含有大量快捷键。读者能够自行设置相关快捷键。通常我会从新设置调试键,这样就和Visual Studio & Chrome Dev Env的行为相同了。花点时间去学习快捷键。用的快捷键越多,使用Eclipse的体验就越快。
这里不会深刻介绍快捷键,读者能够很容易的在网上找到相关资料。下面列出一些必备的快捷键:
1
2
3
4
5
6
7
8
9
10
11
|
Ctrl+Shift+R : jump to resource
Ctrl+Shift+T : jump to class
Ctrl+. : jump to next error
Ctrl+Shift+G : search for references
Ctrl+Shift+P : select matching bracket
Alt+Arrows : go forward / backwards
Ctrl+Space : autocomplete
Ctrl+Shift+F : format source
Ctrl+Shift+O : organize imports
Ctrl+D : delete line
……
|
差很少就是这些了。这里没有将Eclipse与其余IDE进行对比,我认为Eclipse是很是强大且快速的Java代码编辑工具。
若是你有其余技巧,请告诉我。