練功房推薦書單

  • 猛虎出柙雙劍合璧版:最新 OCA / OCP Java SE 7 Programmer 專業認證
  • 流浪教師存零股存到3000萬
  • SCJP 6.0認證教戰手冊(第二版)Oracle Certified Professional Java Programmer(附光碟)
  • 小資女艾蜜莉:我的資產翻倍存股筆記
JDK 6.0 JVM最大記憶體設定  RSS feed
討論區首頁 » Tomcat
發表人 內容
andowson

七段學員
[Avatar]

註冊時間: 2007-01-02 22:20:40
文章: 704
來自: 台北
離線
在Javaworld上面看到一篇文章请教高手:Tomact内存设置1.5G不能启动,裡面提到可以用
java -XmxXXXXM -version指令來測試JVM最大的記憶體設定,經過我自己在CentOS 4.4 Linux上面測試後發現JDK 6.0可以支援到2690M

[andowson@www bin]$ java -Xmx2690M -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode)
[andowson@www bin]$ java -Xmx2691M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

但是如果再加上-server參數,則可以再往上擠出10M,達到2700M。
[andowson@www bin]$ java -server -Xmx2700M -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Server VM (build 1.6.0-b105, mixed mode)
[andowson@www bin]$ java -server -Xmx2701M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

分享經驗 累積智慧
[WWW] [MSN]
windstorm

九級學員
[Avatar]

註冊時間: 2007-05-20 09:06:10
文章: 13
離線
單個JVM記憶体不斷往上設定已經意義不大了,因爲JVM heap size設置過大會影響系統運行性能,而且一般的應用都不需要用到這麽大的Heap size的,除非你的應用存在内存洩漏的情況。

並發用戶量比較大的應用應該通過集群的方式解決問題。

Java EE 軟件之道
andowson

七段學員
[Avatar]

註冊時間: 2007-01-02 22:20:40
文章: 704
來自: 台北
離線
當初的考量是:現在的伺服器配備的記憶體都是以GB作單位了,而且記憶體也很便宜,如果買了有4GB記憶體的伺服器,但是只跑了一個JVM,會不會造成浪費?或是如果覺得系統效能不彰,想要提升效能,增加記憶體是否會遇到Java本身設計上的上限而造成浪費?

分享經驗 累積智慧
[WWW] [MSN]
windstorm

九級學員
[Avatar]

註冊時間: 2007-05-20 09:06:10
文章: 13
離線
JVM heap size的大小限制是跟操作系統有關係的,主要還是受操作系統單個進程可用内存大小限制。
如果JVM heap size設置過大在JVM heap回收内存的時候會導致整個系統停頓一段時間,所以JVM heap size大小的調整是以滿足應用需要為目的。除非你的JVM支持多綫程回收内存,並且設置JVM參數讓JVM在系統CPU空閒的時候部分回收JVM heap内存,否則過大的JVM heap size勢必影響系統性能。

Java EE 軟件之道
andowson

七段學員
[Avatar]

註冊時間: 2007-01-02 22:20:40
文章: 704
來自: 台北
離線
我同意您的觀點,有關JVM參數的調整,我搜尋了一下heap size,發現有幾篇不錯的參考資料
JVM Tuning
smilieXms建議等於Xmx
smilieXmn要小於Xmx
smilieHeap size 不能決定JVM真正使用記憶體的大小,實際上會更大
Memory usage=Stack Size+Heap Size+Code Size
smilie調整Stack size的參數是Xss

Modifying the JVM heap size
IBM的這篇文章有一些實體記憶體大小對應Heap Size設定的參考數字,最大值大約是實體記憶體的一半左右。

分享經驗 累積智慧
[WWW] [MSN]
 
討論區首頁 » Tomcat
前往: