2012-02-16 62 views
64

首先,我有一個8gb的RAM,所以我懷疑總內存是問題。 此應用程序在6GB或更低的機器上運行良好。「VM初始化期間發生錯誤;無法爲對象堆預留足夠的空間「使用-Xmx3G

我試圖在Eclipse的運行配置中的「虛擬機參數」下使用-Xmx3G保留3GB的空間。

每當我嘗試保留超過1500mb時,出現此錯誤: 「VM初始化期間發生錯誤;無法爲對象堆預留足夠的空間「使用-Xmx3G

這裏發生了什麼?

+2

你有什麼版本的java?你在運行什麼操作系統? – 2012-02-16 02:07:42

+0

這是Win7,我安裝了3個不同的Java版本。其中之一就是Eclipse使用的32位JRE。 – user1212731 2012-02-16 19:32:23

+3

不要忘記標記答案是正確的。 – xdhmoore 2013-03-20 21:10:53

回答

51

難道你在那臺機器上使用的是32位的jvm?

+5

對不起,這個愚蠢的問題,但我該如何檢查?我怎樣才能使用64位? – user1212731 2012-02-16 00:48:24

+2

實際上,我只是在命令行嘗試了java -d64 -version,並且發現了64位的服務器虛擬機。 – user1212731 2012-02-16 00:51:17

+6

顯然Eclipse使用的是之前安裝的JRE的32位版本,即使64位是最新的安裝。我更改了首選項 - >已安裝JRE中的設置來解決此問題。非常感謝您的回答! – user1212731 2012-02-16 19:28:13

37

這實際上不是Eclipse特有的問題;這是一個普通的 Java-on-Windows問題。這是因爲JVM如何在 Windows上分配內存;它堅持要分配一塊連續的內存塊,即使有足夠的單獨塊來滿足分配請求,這往往是Windows無法提供的。 有些實用程序會嘗試幫助Windows對其內存進行「碎片整理」, 理論上可以幫助這種情況;但我沒有真正嘗試 他們認真,所以不能說他們的有效性。 有時候我聽說有時可能會有所幫助的一件事是重新啓動Windows ,並且在啓動任何其他應用程序之前,啓動需要大量內存的Java應用程序。如果幸運的話,Windows將不會碎片化其內存空間,而Java將獲得要求的連續塊。

某些地方在interwebs上有更多的技術解釋和 分析這個問題,但我沒有任何引用方便。

我發現這一點,雖然,這看起來有所幫助:https://stackoverflow.com/a/497757/639520

+1

在我的情況,你的答案似乎工作。我沒有重新啓動Windows,但我嘗試關閉窗口中的其他應用程序,然後運行Java,它能夠啓動虛擬機。 – sttaq 2015-02-16 10:08:05

+0

就是這樣!謝謝!!! – manyways 2015-08-05 09:07:40

+0

你已經拯救了我的世界免於被毀滅。 – 2017-07-14 11:41:46

8

確保Eclipse的實際運行,你認爲它運行在同一個JVM。如果你在你的web瀏覽器中使用java,你可能會有一個32位的版本,如果它最近安裝或更新,它可能會優先。我的機器C:/Java/jdk1.6.0_27/bin,我知道JVM是64位位於

-vm 
C:/Java/jdk1.6.0_27/bin 

...其中:

要絕對肯定,我建議在頂部添加以下兩行的eclipse.ini文件。確保在那裏有bin文件夾。

(作爲獎勵,在Windows 7上,這也讓你真正「固定標籤」這就是爲什麼我必須爲我自己的使用做到這一點)

+0

-vm參數應該指向Java可執行文件,而不僅僅是一個文件夾。請參閱http://wiki.eclipse.org/%C2%A0eclipse.ini#Specifying_the_JVM – 2012-02-16 15:03:12

+1

錯誤。看到這個Eclipse錯誤:https://bugs.eclipse.org/bugs/show_bug.cgi?id=314805 – 2012-02-16 16:18:21

+0

這確實是問題! Eclipse使用的是我在某些時候安裝的JRE的32位版本。非常感謝你的回答,並帶領我朝着正確的方向前進!我非常感謝。 – user1212731 2012-02-16 19:25:59

18

首先32位無法使用的JRE更多〜1.5Gb的內存。所以,如果你想要更多,使用64位JRE。其次,當一個新的JVM啓動時,這個總和正在運行的所有JVM的-Xmx屬性,並且檢查系統上是否有足夠的內存在它們自己的-Xmx上運行,如果不夠則發生錯誤。

4

這是堆大小的問題。編輯您的.bat(批處理文件)。它可能會顯示堆大小1024。將其更改爲512然後它應該可以工作。

12

我使用Liferay和eclipse IDE中的Tomcat服務器。 我在點擊服務器啓動時遇到了同樣的錯誤。 從eclipse雙擊服務器。 它打開服務器概述頁面。更新了-Xmx1024m -XX:MaxPermSize = 256m到-Xmx512m -XX:MaxPermSize = 256m的內存參數。 然後它爲我工作。

+0

http://www.genericarticles.com/mediawiki/index .php?title = How_to_increase_tomcat_memory_inside_eclipse – bulltorious 2014-08-08 20:50:27

1

我也有同樣的問題,而使用的是32位的Eclipse和它使用的JVM是64位。 當我將Eclipse路由到32位JVM時,它工作了

0

反正你可能試錯了選項。 我有一個類似的錯誤與支持錯誤日誌:

Java HotSpot(TM) Client VM warning: ignoring option PermSize=32M; support was removed in 8.0 
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=128M; support was removed in 8.0 

林我的情況下,軟件不支持Java 8,但(使用舊的JVM參數劇本),但我已經默認了java的8。

34

這裏是如何解決它: 轉到Start->Control Panel->System->Advanced(tab)->Environment Variables->System

更改爲您合適的路徑

+1

工作!謝謝 – Hardik4560 2015-10-15 08:11:29

+2

謝謝兄弟!它的作用就像魅力。 – uniquephase 2016-08-20 14:31:09

+1

只是爲他人注意。您添加一個SYSTEM變量,而不是一個USER變量。我在Eclipse中遇到了這個問題,在進行上述更改後不必重新啓動我的機器......我只需重新啓動Eclipse。謝謝! – 2017-03-22 15:12:15

0

這個問題的原因之一是沒有可用於Tomcat啓動的內存。嘗試從Windows中刪除不需要的正在運行的軟件,然後重新啓動eclipse和tomcat。

相關問題