2012-03-01 54 views
2

我有一臺運行在Windows 2008 Server上的4GB RAM的Tomcat實例。服務器專門用於這個應用程序,所以我非常希望能夠將大部分內存專用於Tomcat。我的Tomcat設置目前有以下Java選項:Tomcat:調整內存比例

-Xms256m

-Xmx1600m

我想增加RAM的量,優選達到約3GB(很明顯,我知道該怎麼做,只需增加-Xmx值)。但是,如果我將最大堆空間增加到1600MB以上,Tomcat拒絕啓動。我讀過的幾個網站表示,Tomcat不能使用超過40%的可用RAM,這與我所看到的一致。

是否有增加的內存的Tomcat可以使用比例,這樣我就可以增加量的內存的Tomcat可以使用的一種方式?

謝謝, 裏克多維

+1

'$ GB'?錯字? 4GB? – 2012-03-01 15:52:35

回答

2

儘管有64位服務器我只安裝32位Java/Tomcat的。我卸載了Java和Tomcat,並安裝了64位版本,一切正常。似乎問題是32位Java只能解決1.5 GB的問題。

感謝, 裏克

+0

您的答案不正確,32位JVM不限於1.5 GiB的堆空間。限制是OS的進程大小。 – Mikaveli 2012-03-13 12:47:37

+0

@Mikaveli:你能提供證據或引用嗎? Rik提出了似乎支持他的結論的實驗證據。我想知道他是對還是錯。 – LarsH 2012-09-20 14:10:13

+0

@LarsH這裏你去:http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#gc_heap_32bit甲骨文表示,一個32位的JVM可以解決接近4 GiB(64位)的Solaris和通常Windows上最高可達1.6 GiB。 – Mikaveli 2012-09-20 15:54:53

3

你的問題很可能是OS相關的,不是的Tomcat/Java的。 Windows操作系統將32位進程的內存分配限制爲2 GiB(默認情況下)。

它只允許你分配1.5 GiB堆空間的原因是因爲還有其他內存分配給進程(JVM /庫開銷,perm gen空間等)。

Why does 32-bit Windows impose a 2 GB process address space limit, but 64-bit Windows impose a 4GB limit?

其它現代操作系統[咳嗽的Linux]允許32位進程到4吉布可尋址空間的使用所有(或大部分)。

這就是說,64位的Windows操作系統的可以被配置爲增加32位進程的極限至4吉布(3吉布在32位):

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx

然而,如你」正確完成,最好的解決方案是在64位操作系統上使用64位JVM。 Terabyte堆人:

Max memory for 64bit Java:D