這些技巧不僅僅縮短了Eclipse的啓動時間,其中大部分技巧還改善了用戶體驗。例如,更快地打開類、從一處定義跳到另外一處、查看javadoc等。但這些提速無法用時間精確的測量,所以對每條技巧帶來的提速效果也沒有特定的基準。
提示:假設你已經裝了固態硬盤,並且有至少8Gb的內存。如果沒有的話,帶來的性能提升可能不大。
技巧一:運行最新版本的JDK和Eclipse
通常,新版本的JDK和Eclipse都會有性能上的優化。請確保你使用的是64位Eclipse並且使用了Oracle的JDK。對於網絡開發,需要使用Eclipse for Java EE而不是Eclipse for Java。
- Oracle JDK : http://www.oracle.com/technetwork/java/javase/downloads
- Eclipse : https://eclipse.org/downloads/
將Eclipse和workspace放在固態硬盤上。啓動Eclipse吧。
技巧二:調整Eclipse的Preferences
- General > Startup and Shutdown : 移除所有在啓動時加載的插件。
- General > Editors > Text Editors > Spelling : 關閉拼寫檢查。
- General > Validation > 勾選“Suspend all validator”。
- Window > Customize Perspective > 移除所有用不到或不想用的內容(儘量使用快捷鍵),菜單欄也是如此(你用過幾次菜單欄的打印按鈕?)。
- Install/Update > Automatic Updates > 取消勾選“Automatically find new updates and notify me”。
- General > Appearance > 取消勾選“Enable Animations”。
- 使用默認的主題。其他主題可能會降低運行速度。
我自己還關閉了自動提示,這樣在輸入代碼時不會拖累我。替代方案是使用Ctrl+Space在需要的使用手動提示。可以通過下面的配置來完成:(譯者注:Ctrl+Space?中國人不會答應的)。
- Java > Editor > Content Assist > 禁用“Enable Auto Activation”。在Advanced中移除所有不需要的內容(在Eclipse 4.2.2中沒找到)。
技巧3:將JDK放在內存盤(RAM Disk)上
內存盤是將計算機內存的作爲虛擬磁盤或硬盤使用。用來加速位於其中的軟件的IO性能。內存中創建的RAM盤就像是計算機上的一塊硬盤。由於這些內存當作硬盤使用,所以其他程序就不能使用這些內存空間。我們只是將JDK放到那裏,300MB就足夠了。
警告:不要將任何內容永久性的放到內存盤中,每次重啓時,裏面的內容都會消失並重新創建。
對於Linux用戶:
這個鏈接中有詳細的描述。
對於Mac用戶:
使用diskutil工具創建內存盤
1. 創建一個新的腳本,例如:~/tools/batch/ramdisk.sh
將其中的x、y、z替換爲你的JDK版本:
- #!/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. 保存腳本,將其改爲可執行模式:
- chmod 755 ~/tools/batch/ramdisk.sh
運行ramdisk.sh將創建內存盤:
- $ 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腳本。
對於Windows用戶:
1. 下載並安裝名爲imdisk的工具
2. 創建一個新的批處理文件,如:C:/tools/batch/ramdisk.bat
將其中的x、y、z替換爲你的JDK版本號:
- @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設置(詳見下一節)。
技巧4:調整你的eclipse.ini
在Eclipse的優化中,這是最令人困惑的地方。網上有海量的文章介紹不同的配置方案。我只是介紹我自己的配置方案。
找到你的eclipse.ini文件:
- Windows/Linux:位於$ECLIPSE_HOME(譯者注:$ECLIPSE_HOME是Eclipse的路徑,這裏假設Linux下也是自行安裝,而不是通過源安裝)
- MacOS:位於$ECLIPSE_HOME/Eclipse.app/Contents/MacOS
- 明白接下來的工作的含義……
- eclipse.ini中有兩種類型的屬性:與Eclipse應用相關的屬性;與JVM相關的屬性。這些選項具體取決於JDK和Eclipse的版本。下面的是我在網上找到的最新的列表。
- 要理解這些屬性,首先要了解Oracle JVM的內存佈局。一般來說,JVM內存分成幾個內存池,對象根據不同存在時間位於不同的內存池中。
- Eden空間(堆)是用於許多剛創建的對象。垃圾收集器每趟一般都是在這裏處理”新代的“對象,並移除所有不再使用的對象。
- Survivor空間(堆)含有那些在Eden空間中GC兩三趟都沒有銷燬的對象。這些對象依然屬於新生代,但將其移動到更安全的地方,被收集的風險大大降低。垃圾收集器在這裏運行的頻率要低很多(GC根據以往的經驗來判斷這裏的對象都是經常使用的)。
- Tenured空間(堆)含有在Survior空間存活相當一段時間的對象。
- 永生代(非堆)含有JVM的元數據,如類屬性、方法、枚舉等。由於這些數據可以在多個JVM間共享。所以永生代分只讀和讀寫兩個區域。
- 代碼緩存(非堆)提供了用於編譯並存儲代碼的內存空間。
如果你對此感興趣,Oracle含有一篇很不錯的關於配置垃圾收集的文章,其中詳細介紹了所有這些空間的用途。
在eclipse.ini中,可以控制每個內存池的大小。下面的配置是針對我的16G內存設定的,但也可用於8G的內存。
使用位於RAM Disk中的JDK(使用在步驟三中的版本號):
- -vm /Volumes/JDKRAMDISK/jdk1.x.y_z.jdk/Contents/Home/
- -vm N:/jdk1.x.y_z/bin
禁用字節碼驗證(有風險)
這是跳過了class文件的驗證(class文件的驗證的信息參見這裏),意味着JVM不會檢測使用的class文件。如果使用的class文件被修改過,會有安全風險。自己承擔風險(我僅僅是玩的時候用,不會在工作中啓用這個選項)。
打開編譯器性能優化
- -XX:+AggressiveOpts
增加永生代空間(分配新對象的地方)(譯者注:在JDK 8中,取消了永生代)
- -XX:PermSize=512m
- -XX:MaxPermSize=512m
增加最小最大堆的空間(含有新生代和年老代)
- -Xms2048m
- -Xmx2048m
爲新生代增加堆的大小
- -Xmn512m
爲每個線程設置棧大小
- -Xss2m
調整垃圾收集
- -XX:+UseParallelOldGC
最後,這裏列出其他可能在網上看到的選項。就我個人而言,這些選項都沒有加速效果,所以僅僅是用來參考。讀者可以在網上找到相應的文檔,來了解並使用對應的選項:
- -XX:MaxGCPauseMillis=10
- -XX:+UseG1GC
- -XX:CompileThreshold=5
- -XX:MaxGCPauseMillis=10
- -XX:MaxHeapFreeRatio=70
- -XX:+CMSIncrementalPacing
- -XX:+UseFastAccessorMethods
- -server
最後,移除所有重複的選項,包括launcher.XXMaxPermSize,因爲啓用了XX:MaxPermSize選項後,這個選項就沒用了。
技巧5:關閉殺毒軟件
如果有殺毒軟件,要確保這些軟件不會檢查代碼文件夾。將JDK、Eclipse、你的.m2/jar代碼庫和代碼文件夾添加到殺毒軟件的白名單。
技巧6:不要在Eclipse中運行SVN和GIT
這是個人偏好。有些人喜歡將Eclipse與團隊協同工具結合起來。就我個人而言,這樣速度很慢,我寧願Eclipse專注於開發工作,而不是同時做許多事。我還非常喜歡SVN/GIT命令行。不管怎麼說,我把這些工具從Eclipse中移除,發現響應速度更快了。
技巧7:使用鍵盤
Eclipse的一個有點是其中含有大量快捷鍵。讀者可以自行設置相關快捷鍵。一般我會重新設置調試鍵,這樣就和Visual Studio & Chrome Dev Env的行爲相同了。花點時間去學習快捷鍵。用的快捷鍵越多,使用Eclipse的體驗就越快。
這裏不會深入介紹快捷鍵,讀者可以很容易的在網上找到相關資料。下面列出一些必備的快捷鍵:
- 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代碼編輯工具。
原文:http://www.nicolasbize.com/blog/7-tips-to-speed-up-eclipse/
轉自:http://www.iteye.com/news/29878