加速 Eclipse 的 7 大技巧
大約一個月前,我發表了一篇部落格,其中介紹了對Eclipse的愛與恨。 有些人問我如何給Eclipse提速,這篇文章就來討論這個問題。順帶提一下,這篇文章不是比較IDE,所以不要說你討厭某個IDE而選擇另外一個。這篇文章只是關注如何讓Eclipse執行得更快。每個技巧都針對Windows、Linux和MacOS使用者詳細說明。在使用所有優化技巧之後,Eclipse應該能在10秒內啟動,並且比以前執行得更流暢。
這些技巧不僅僅縮短了Eclipse的啟動時間,其中大部分技巧還改善了使用者體驗。例如,更快地開啟類、從一處定義跳到另外一處、檢視javadoc等。但這些提速無法用時間精確的測量,所以對每條技巧帶來的提速效果也沒有特定的基準。
提示:假設你已經裝了固態硬碟,並且有至少8Gb的記憶體。如果沒有的話,帶來的效能提升可能不大。
技巧1:執行最新版本的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吧。
技巧2:調整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工具建立記憶體盤
建立一個新的指令碼,例如:~/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)
儲存指令碼,將其改為可執行模式:
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使用者:
下載並安裝名為imdisk的工具
建立一個新的批處理檔案,如: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。
確保檔案以管理員模式執行。右擊檔案,選擇“屬性——相容性——勾選“以管理員身份執行此程式”。
如果想使用這個技巧,那麼每次啟動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程式碼編輯工具。
如果你有其他技巧,請告訴我。
(本文轉自碼農網!覺著很好,跟大家分享一些)
原文連結: nicolasbize 翻譯: ImportNew.com - 孫 波翔
譯文連結: http://www.importnew.com/13942.html
相關文章
- eclipse使用技巧Eclipse
- Eclipse小技巧Eclipse
- JAVA新手必學的15大Eclipse開發快捷鍵技巧JavaEclipse
- Eclipse的技巧(快捷鍵等)Eclipse
- 學習營銷郵件的設計技巧,掌握7大技巧
- PHPUnit 加速技巧分享PHP
- Eclipse使用小技巧Eclipse
- 軟體工程師面試7大技巧軟體工程工程師面試
- eclipse除錯的方法和技巧Eclipse除錯
- 優秀遠端開發者具備的7大技巧
- 持續部署單頁應用的7大技巧
- Eclipse使用技巧總結Eclipse
- Eclipse的Debug介紹與技巧Eclipse
- Eclipse 的 Debug 介紹與技巧Eclipse
- 7大Git實用技巧和命令總結Git
- Transformers 加速的一些常用技巧ORM
- 加速部落格體驗:靜態資源最佳化技巧大揭秘!
- 使用Eclipse除錯Java程式的10個技巧Eclipse除錯Java
- 使用Eclipse除錯Java 程式的10個技巧Eclipse除錯Java
- 網站加速的【5大因素】網站
- 構建郵件自動化營銷的7大技巧,助你事半功倍!
- eclipse一些實用小技巧Eclipse
- 構建API的7個技巧API
- Eclipse的編輯功能非常強大,掌握了Eclipse快捷鍵Eclipse
- 【譯】分享7個好用的JavaScript技巧JavaScript
- 早該知道的7個JavaScript技巧JavaScript
- 告別卡頓,暢享GitHub:國內開發者必看的五大加速訪問與下載技巧Github
- 處理 JS 中 undefined 的 7 個技巧JSUndefined
- 7個讓你驚歎的HTML技巧HTML
- 合合TextIn - 大模型加速器大模型
- eclipse三大註釋快捷鍵Eclipse
- Unity乾貨知識:加速Lightmap烘焙速度的一些小技巧Unity
- 7 個改變我生活的 Git 小技巧Git
- 在 CentOS 7 / RHEL 7 上怎樣安裝 Eclipse Luna IDECentOSEclipseIDE
- 9 個強大的 JavaScript 小技巧JavaScript
- 簡單而強大的JavaScript技巧JavaScript
- Windows 10優化7個技巧Windows優化
- eclipse使用技巧---使用正規表示式查詢替換Eclipse