首頁  >  文章  >  後端開發  >  解析Linux系統中JVM記憶體2GB上限的詳解

解析Linux系統中JVM記憶體2GB上限的詳解

高洛峰
高洛峰原創
2017-01-23 10:10:541702瀏覽

我們通常使用的JVM都是32位元的(64位元的JVM會損失10-20%的效能,通常不建議使用),而32位元程式的尋址空間應該是4GB才對,為什麼Linux上的JVM記憶體只能使用2GB呢?

經過和JDK研發組的人員溝通,終於弄清楚了一些相關的原因。這個問題存在於早期的一些Linux版本中,特別是核心2.5以前的版本,2.6以後的版本就基本上沒有這個問題了。原來這些Linux版本對進程有個對記憶體2GB的限制,是一個位址連續的記憶體區塊大小的上限,而JVM的堆空間(heap size)需要連續的位址空間,因此,2GB就是java進程的理論所使用的內存上限。

如果java應用程式需要使用較大的內存,建議使用較新版本的linux,或修改Linux的應用程式/內核記憶體比配置為3GB:1GB。還有就是選擇如Solaris等的UNIX作業系統。像Solaris這樣的作業系統,在JVM記憶體管理上沒有2GB的限制,因此可以把heap size設定到3.5-3.6GB左右。

更多解析Linux系統中JVM記憶體2GB上限的詳解相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn