我們必須具有這樣開始的說法Java進程:-Xms5120m -Xmx5120M將JVM分配5G內存如果Xms5120m
JVM會在啓動分配5G內存?
與-Xms1024m -Xmx5120M相比,這是一個很好的做法嗎?
[更新]
即使我設置Xms5120M,它似乎被忽略。當進程啓動時,任務管理器顯示它只使用了大約2G內存。這是爲什麼?
我們必須具有這樣開始的說法Java進程:-Xms5120m -Xmx5120M將JVM分配5G內存如果Xms5120m
JVM會在啓動分配5G內存?
與-Xms1024m -Xmx5120M相比,這是一個很好的做法嗎?
[更新]
即使我設置Xms5120M,它似乎被忽略。當進程啓動時,任務管理器顯示它只使用了大約2G內存。這是爲什麼?
java只會分配當時需要的東西。當你告訴它你想要的是-Xmx5G,它告訴計算機在最大。而xms是最小系統內存。如果初始內存堆不會超過5G,而是使用2G,那麼任務管理器只是告訴你2G內存正在使用,但不會顯示你的分配。這表明你的內存堆不會佔用分配內存的全部5G。
如果你真的想最初的堆內存要立即初始化,你也許可以嘗試-XX:+AlwaysPreTouch
JVM選項:
預觸摸JVM初始化期間Java堆。因此堆的每一頁都在初始化期間被求零,而不是在應用程序執行期間遞增。
http://www.oracle.com/technetwork/articles/java/vmoptions-jsp-140102.html
你爲什麼不試試呢? – skaffman 2012-04-26 23:32:26
第二個問題呢? – performanceuser 2012-04-27 00:20:47
你正在運行32位或64位Java? – 2012-04-27 00:45:23