Eclipse3.6調優

 

 

 

(一)Eclipse中JVM內存設置

-Xms128M    
-Xmx1024M    
-XX:PermSize=128M   
-XX:MaxPermSize=256M  
-XX:+UseParallelGC  


寫道
這裏有幾個問題:

1.各個參數的含義什麼?

2.爲什麼有的機器我將-Xmx和-XX:MaxPermSize都設置爲512M之後Eclipse可以啓動,而有些機器無法啓動?

3.爲何將上面的參數寫入到eclipse.ini文件Eclipse沒有執行對應的設置?

下面我們對這些問題一一進行回答,相信通過對這些問題的解釋你對JVM內存設置也就有了一定的認識。

1.各個參數的含義什麼?

參數中-vmargs的意思是設置JVM參數,所以後面的其實都是JVM的參數了,我們首先了解一下JVM內存管理的機制,然後再解釋每個參數代表的含義。

堆(Heap)和非堆(Non-heap)內存

按照官方的說法:“Java虛擬機具有一個堆,堆是運行時數據區域,所有類實例和數組的內存均從此處分配。堆是在Java虛擬機啓動時創建的。”“在 JVM中堆之外的內存稱爲非堆內存(Non-heapmemory)”。可以看出JVM主要管理兩種類型的內存:堆和非堆。簡單來說堆就是Java代碼可及的內存,是留給開發人員使用的;非堆就是JVM留給自己用的,所以方法區、JVM內部處理或優化所需的內存(如JIT編譯後的代碼緩存)、每個類結構 (如運行時常數池、字段和方法數據)以及方法和構造方法的代碼都在非堆內存中。

堆內存分配

JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。默認空餘堆內存小於 40%時,JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減少堆直到-Xms的最小限制。因此服務器一般設置-Xms、 -Xmx相等以避免在每次GC後調整堆的大小。

非堆內存分配

JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。

JVM內存限制(最大值)

首先JVM內存限制於實際的最大物理內存(廢話!呵呵),假設物理內存無限大的話,JVM內存的最大值跟操作系統有很大的關係。簡單的說就32位處理器雖然可控內存空間有4GB,但是具體的操作系統會給一個限制,這個限制一般是2GB-3GB(一般來說Windows系統下爲1.5G-2G,Linux系統下爲2G-3G),而64bit以上的處理器就不會有限制了。

2.爲什麼有的機器我將-Xmx和-XX:MaxPermSize都設置爲512M之後Eclipse可以啓動,而有些機器無法啓動?

通過上面對JVM內存管理的介紹我們已經瞭解到JVM內存包含兩種:堆內存和非堆內存,另外JVM最大內存首先取決於實際的物理內存和操作系統。所以說設置VM參數導致程序無法啓動主要有以下幾種原因:

1)參數中-Xms的值大於-Xmx,或者-XX:PermSize的值大於-XX:MaxPermSize;

2)-Xmx的值和-XX:MaxPermSize的總和超過了JVM內存的最大限制,比如當前操作系統最大內存限制,或者實際的物理內存等等。說到實際物理內存這裏需要說明一點的是,如果你的內存是1024MB,但實際系統中用到的並不可能是1024MB,因爲有一部分被硬件佔用了。

3.爲何將上面的參數寫入到eclipse.ini文件Eclipse沒有執行對應的設置?

那爲什麼同樣的參數在快捷方式或者命令行中有效而在eclipse.ini文件中是無效的呢?這是因爲我們沒有遵守eclipse.ini文件的設置規則:

參數形如“項值”這種形式,中間有空格的需要換行書寫,如果值中有空格的需要用雙引號包括起來。比如我們使用-vmC:\Java\jre1.6.0\bin\javaw.exe參數設置虛擬機,在eclipse.ini文件中要寫成這樣:

-vm C:\Java\jre1.6.0\bin\javaw.exe 按照上面所說的,最後參數在eclipse.ini中可以寫成這個樣子:

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 實際運行的結果可以通過Eclipse中“Help”-“AboutEclipseSDK”窗口裏面的“ConfigurationDetails”按鈕進行查看。

另外需要說明的是,Eclipse壓縮包中自帶的eclipse.ini文件內容是這樣的:

-showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m -vmargs -Xms40m -Xmx256m 其中–launcher.XXMaxPermSize(注意最前面是兩個連接線)跟-XX:MaxPermSize參數的含義基本是一樣的,我覺得唯一的區別就是前者是eclipse.exe啓動的時候設置的參數,而後者是eclipse所使用的JVM中的參數。其實二者設置一個就可以了,所以這裏可以把 –launcher.XXMaxPermSize和下一行使用#註釋掉。

3.其他的啓動參數。如果你有一個雙核的CPU,也許可以嘗試這個參數:

-XX:+UseParallelGC 讓GC可以更快的執行。(只是JDK5裏對GC新增加的參數)
 



(二)關閉功能

 

關閉Eclipse的數據收集


關閉沒有必要的驗證


 


 (三)關閉多餘插件

 

Eclipse 3.6 JEE版本打包了不少插件,對於性能不太好的機器可以關閉。

 

移除eclipse3.6\features下的插件
或者修改eclipse3.6\features爲features.bak

 

 (三)調整Tomcat配置

 

使用免部署模式,避免文件Copy。


Tomcat Publishing Options

  • Two new options which affect publishing are now available in the Server Options section of the Tomcat server editor. The Tomcat server must be 5.0.x or later for these options to be enabled. The
Serve modules without publishing option does what it says. Web content will be served directly from the "WebContent" folder of the Dynamic Web Project. A customized context is used to make the project's dependencies available in the Web application's classloader. The Publish module contexts to separate XML files option will publish contexts using the preferred method of separate XML files under the "conf/Catalina/localhost" directory, rather than keeping them in the "server.xml" file. A couple of improvements for this option are noted in Bugs 180931 and 180936.

參見Eclipse官方文檔:

http://www.eclipse.org/webtools/releases/2.0/newandnoteworthy/server.php
 

 


發佈了30 篇原創文章 · 獲贊 0 · 訪問量 841
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章