2011-03-29 128 views
3

我使用的是32位WinXP,看不到升級,有沒有辦法限制Eclipse在一天中分配的內存量?我也在eclipse中的調試模式下運行Weblogic 10服務器。幾個小時後,我有一個700MB的STS.exe(日食)和400MB的java.exe(服務器)。至少有一種方法可以在Eclipse上強制GC? 這裏是我現在使用的設置,這在我看來並沒有被觀察到。Eclipse內存限制

-vm 
C:\bea\jdk160_05\bin\javaw.exe 
-showsplash 
--launcher.XXMaxPermSize 
128M 
-vmargs 
-Dosgi.requiredJavaVersion=1.5 
-Xms40m -Xmx512m 
-Dsun.lang.ClassLoader.allowArraySyntax=true 

編輯:這裏是一個項目的怪物:Eclipse和火狐4 enter image description here

回答

1

我假設你正在運行BEA JRockit的通過向javaw.exe的路徑判斷。請注意,-X...選項是特定於JVM的,因此它們可能與Sun的JVM中的JRockit的工作方式不同。 This link似乎表明,你應該使用

... -Xms:40m -Xmx:512m ... 

但設置堆大小限制只會導致一旦到達極限Eclipse的失敗,這樣你就不會解決真正的問題。強制執行GC通常不會有幫助;任何理智的VM都會定期或在需要時進行GC。

擁有一個700Mb的Eclipse聽起來像你的Eclipse要麼處理大量的數據,要麼就是內存泄漏。 JRockit似乎有一個memory leak detector這可能會給你一個問題的地方暗示。

+0

嗨JesperE,我使用的Java (TM)SE運行環境(1.6.0_05構建-B13) 的HotSpot的Java(TM)客戶端虛擬機(建設10.0 - B19,混合模式) – Elijah 2011-03-30 01:07:34

0

日食非常口渴。限制它最有可能使其崩潰。你真的需要一臺新電腦。

2

700MB的OS級進程usuage與您的內存設置一致。堆爲512m + 128m爲permgen空間+ JVM本身的開銷。

你不能強制GC。如果內存是可釋放的,JVM會釋放它。請注意,您不能簡單地查看操作系統級別的進程使用情況,因爲它代表了JVM內存使用量達到峯值的點。一旦JVM擴展到一定的大小,JVM不會釋放堆或permgen空間。這太昂貴了,並不是真的有必要。分配的空間位於JVM進程的虛擬地址空間中。它不代表實際的物理內存使用情況。隨着物理內存變得緊張,操作系統將積極地轉換到最近未使用的磁盤內存頁面。

因此......您需要專門的內存分析工具來精確表示Eclipse內存使用情況。

如果您看到很多磁盤活動時應該沒有,操作系統可能確實超出了物理內存並進行了大量的交換。嘗試關閉一些項目或重新啓動Eclipse。它只需要一個內存泄漏插件來消耗所有可用的內存。

3

有沒有辦法限制Eclipse在一天中分配的內存量?

-Xmx和-XX:MaxPermSize的值在JVM將使用的內存上放置一個上限。

難道至少有一種方法可以強制eclipse上的GC嗎?

AFAIK,no。即使有,也可能無濟於事。 JVM不太可能將內存提供給操作系統。

這裏是我目前使用的設置,這在我看來並沒有被觀察到。

根據你所說的(eclipse.exe的內存使用量700Mb),我會說設置被觀察到。


如何讓Eclipse使用更少的內存?

  • 修剪-Xmx和-XX的值:MaxPermSize參數。然而,如果你這樣做太多,你可能會使Eclipse變得遲鈍(因爲它必須更頻繁地使用GC)並且最終會失敗(因爲它將耗盡內存,並且事情將會隨着OOME而開始失敗)

  • 擺脫多餘的插件。

  • 切換到「較小」的Eclipse(例如「Classic」發行版)......儘管您將失去一些您可能正在使用的J2EE支持。

  • 關閉項目。

  • 關閉文件。

  • 更頻繁地重新啓動Eclipse。


但是,最好的解決辦法是升級您的平臺:

  • 買你的PC /筆記本電腦的一些更多的內存。你大概可以花費幾百美元。這是值得的。

  • 將操作系統切換到Linux。根據我的經驗,Linux是一個比Windows XP更好的Java軟件開發平臺。在內存和文件系統管理方面,它似乎做得更好。相同硬件上的性能差異非常顯着。

    您可以隨時將您的機器設置爲雙啓動,以便您仍然可以爲其他事情運行XP。

+0

謝謝斯蒂芬對此做出了詳細的迴應我確實對我的電腦升級感到嗤笑:)我有一個公司的絞索,沒有希望獲得64位操作系統。這是我悲痛的癥結所在。筆記本電腦有大量的RAM,它只是在32位操作系統下不可見。嘆。 – Elijah 2011-03-30 01:15:25

+0

@Yev - IIRC,升級到Linux也會有幫助,即使是32位版本也是如此。你可以做的另一件事是請求第二臺個人電腦,並將其他一些東西(瀏覽器,電子郵件,MS Office等)卸載到該機器上。 – 2011-03-30 01:23:28

1

ini文件內存設置對虛擬機無效。更改虛擬機的參數,如here