給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代碼編輯工具。
若是你有其餘技巧,請告訴我。