jvm - 关于java -Xms参数的疑问
伊谢尔伦
伊谢尔伦 2017-04-18 10:21:06
0
2
495

通过java -X看到java -Xms的解释

-Xms<size> set initial Java heap size

但我测试发现,
虽然我的机器内存只有1G,但通过 java -Xms3G -Xmx3G appname可以成功启动应用,那么这个分配机制是怎么的呢?

就是指定了-Xms 3G,但机器内存只有1G的情况下,是怎样分配内存的?

注:

# free -m|grep Swap
Swap:            0          0          0
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(2)
大家讲道理

因為有作業系統的記憶體管理機制存在, 每個行程都會分配一個虛擬的位址空間(對應32位元系統, 則是4G 虛擬行程位址空間). 虛擬位址空間的有一部分記憶體位址對應到實際的實體記憶體中, 當進程所需的記憶體大於實際的物理記憶體時, 則它的有一部分虛擬記憶體位址會映射到磁碟上. 由於這個機制的存在, 因此進程就好像可以使用到比實際物理記憶體還要大的記憶體空間.

對於你的問題, JVM 需要3G 的內存空間, 而實際機器只有1G, 因此操作系統會將JVM 進程中暫時用不到的內存存入磁碟(即Swap space), 當JVM 需要使用到另外一部分內存時, 則透過記憶體交換(Memory Swap), 將磁碟中的資料寫入記憶體. 因此如果頻繁發生Memory Swap, 那麼程式必然很慢.

迷茫

還有虛擬記憶體可以用。
你把虛擬記憶體調小或直接停用就不行了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!