2014-02-24 58 views
4

我將系統從13.04升級到13.10,我無法再啓動Cassandra,出現內存不足錯誤,所以即使堆已滿我當時所做的只是啓動服務器。Cassandra在啓動時生成「java.lang.OutOfMemoryError:Java堆空間」錯誤

我進去了,用-Xmx1992m(默認值)增加了最大堆大小爲-Xms2500m。

我想知道爲什麼需要做這樣的事情?難道內存在運行Linux內核3.5.0和移植到內核3.11.0之間有所下降,這可能會影響Cassandra嗎? (即說我「失去」200M,現在它分配1992Mb而不是2192Mb與以前的內核,可能是??)

我在這裏關心的是,任何時候我升級我可以運行在這樣的問題,除非我強制將最大堆大小強制爲一個固定的數字(而不是讓腳本確定Mb動態使用)。另外,我不能永遠繼續增加限制。我的內存是有限的......(顯然)

在啓動時卡桑德拉顯示以下(破3線,使其更容易讀到這裏):

xss = -ea -javaagent:bin/../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities 
     -XX:ThreadPriorityPolicy=42 -Xms1994M -Xmx2500M -Xmn400M 
     -XX:+HeapDumpOnOutOfMemoryError -Xss256k 

更新:

啊!它仍然是啓動OpenVMS的,因爲它指向/ usr/lib中/ JVM /默認的Java的$ JAVA_HOME變量(它是在/ etc /環境中定義):

JAVA_HOME=/usr/lib/jvm/default-java 

而且在某種程度上它是設置回的OpenVMS那裏。儘管我更改了/ etc/alternatives/java softlink,因此我的命令行中的java -version「正常工作」(返回我所期望的),Cassandra啓動腳本使用$JAVA_HOME變量!

所以我檢查可用的虛擬機與列表:

ls -l /usr/lib/jvm 

lrwxrwxrwx 1 root root 24 Apr 27 2012 default-java -> java-1.7.0-openjdk-amd64 
drwxr-xr-x 4 root root 4096 Feb 23 17:54 java-1.5.0-gcj-4.8-amd64 
lrwxrwxrwx 1 root root 20 Sep 2 2012 java-1.6.0-openjdk-amd64 -> java-6-openjdk-amd64 
lrwxrwxrwx 1 root root 20 Jul 3 2013 java-1.7.0-openjdk-amd64 -> java-7-openjdk-amd64 
drwxr-xr-x 5 root root 4096 Oct 7 2012 java-6-openjdk-amd64 
drwxr-xr-x 3 root root 4096 Oct 7 2012 java-6-openjdk-common 
drwxr-xr-x 5 root root 4096 Sep 21 20:06 java-7-openjdk-amd64 
drwxr-xr-x 8 root root 4096 Sep 18 21:18 java-7-oracle 

,並運行以下兩個命令來獲得甲骨文運行:

sudo rm /usr/lib/jvm/default-java 
sudo ln -s java-7-oracle /usr/lib/jvm/default-java 

然而,這並變化的事實。我仍然需要在內存方面有很大的上限。

+0

32位或64位jvm? –

+0

哦!我想把參數和這樣的信息。我在64位。使用Oracle時,雖然它在OpenJVM上設置,但重新啓動後才發現,直到我測試完成後才發現,所以它在OpenJVM中嘗試了幾次。兩個版本7. –

+0

哦!我將選擇改爲Oracle,但看起來這還不夠。它使用'/ usr/lib/jvm/default-java/bin/java',它看起來像是OpenJVM。 Arrrgh! –

回答

2

像應用程序,庫,甚至是核心Java的內存使用情況如有更改,恕不另行通知。您應該期待特別重大的更改記錄,但在大多數情況下,這裏或者那裏不會有幾百MB。

這是一個普遍的真理,在大多數情況下,隨着軟件的發展,內存使用量會增加。隨着程序變得越來越大,獲得更多的功能等,他們也消耗更多的內存。查看特定作業所需的內存量的唯一方法就是測試它 - 如果軟件版本發生變化,則再次進行測試。

最簡單的方法就是確保您首先分配足夠的空間,小增加不會成爲問題。

+0

是的...不幸的是,有時它也意味着事情停止工作,這是一個真正的煩惱。例如,在這一點上我完全沒有聲音。自從我在4到5年前拿到電腦以來,它就開始工作了。真可惜。 –

相關問題