2012-03-20 144 views
3

我使用線程開發了聊天應用程序。但是當我開始我的應用程序系統行爲非常緩慢,有時會發生堆已滿的異常。我想增加Java虛擬機的堆大小。我該怎麼做?關於增加JVM的堆大小

+1

這可能對你有幫助http://stackoverflow.com/questions/880855/increase-the-java-heap-size-permanently – kunal 2012-03-20 13:48:41

回答

2

-Xmx100m添加到啓動應用程序時的命令中。這會給你100 MB的堆(你可以改變數字)。

一個聊天應用程序將需要比標準堆大小更多這聽起來很奇怪......

+0

我聊天應用程序有點巨大,包括更多的功能。我有我的應用程序的可執行jar。那我該怎麼做呢? – Vinay 2012-03-20 13:49:01

+0

像'java -Xmx100m -jar yourjar.jar'應該這樣做。 – 2012-03-20 13:57:48

+0

'功能'不一定會佔用堆空間。類被加載到堆的'PermGen'部分。我認爲你默認有64MB堆。這是很多數據。 – 2012-03-20 13:59:18

3

您可以增加堆大小,但你的更大的問題是「爲什麼我得到異常?」如果您的應用程序沒有正確清理後,增加堆大小隻會延遲不可避免的。

你需要用Visual VM來測試你的應用程序,看看發生了什麼。這會給你更多的路徑,而不僅僅是增加堆的大小。

+0

+1不要只治療症狀!治癒原因! – Terraego 2012-03-20 14:15:14

4

只需增加JVM的堆大小即可。所有的Java應用程序,甚至簡單的應用程序都會佔用大量內存。看看這article詳細解釋如何增加可用於您的應用程序的內存量;基本上你需要一些額外的參數傳遞給JVM,當你調用java命令,就像這樣:

java -Xms64m -Xmx256m HelloWorld 

在上面的命令,我說,HelloWorld程序應該有一個初步的堆大小爲64MB,最大爲256MB。嘗試使用這些值並調整它們直到找到適用於您的應用程序的值的組合。

1

塊引用

大型服務器應用程序通常會遇到兩個問題,這些 默認值。一種是啓動緩慢,因爲最初的堆很小,並且必須在許多主要集合上調整其大小。 更緊迫的問題是,大多數 服務器應用程序的默認最大堆大小不合理地較小。

塊引用

你可以通過命令提示符下使用這些參數 的java -Xms64m -Xmx256m chat_program啓動程序。 這裏Xms64m = 64MB初始堆大小 和Xmx256m = 256MB最大堆大小

+0

謝謝。這是發生的事情。我的服務器需要時間來回應。 – Vinay 2012-03-20 14:12:20