2 回答

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊
僅是指定服務(wù)器啟動時初始化的參數(shù)值,這些默認(rèn)值影響運行時的性能。
普通 PC 就工作在 client 模式就好了,特別是你的內(nèi)存不是很大時不需要 server 模式,因為 server 模式是為服務(wù)器準(zhǔn)備的,它的意思就是說這個服務(wù)器啟動之后基本上不做別的,所以可以把所有內(nèi)存都盡量給 JVM 使用,所以才能得到一個更好的性能。
但是 PC 機的話,因為我們頻繁地在多個程序切換,每次把程序帶到前臺窗口或退到后臺窗口都會導(dǎo)致 Windows 操作系統(tǒng)在物理內(nèi)存和硬盤上的虛擬內(nèi)存之間切換,這影響性能。一個常見的事情就是我們開著多個程序,并且把 Java 程序切換到最小化,另一個非 Java 程序最大化,然后我們出門吃飯 2 小時后回來把 Java 程序最大化,你會發(fā)現(xiàn)這個時候切換到最大化可能需要 15分鐘的時間,這就是內(nèi)存緊張時虛擬內(nèi)存和物理內(nèi)存間交換數(shù)據(jù)時導(dǎo)致 JVM 頻繁地觸發(fā)垃圾收集(GC)導(dǎo)致的性能問題。而這個現(xiàn)象在 server 模式不會出現(xiàn),因為它是假設(shè)服務(wù)器專用的,而且基本上沒有前臺程序,都是后臺程序。
JVM 并不能預(yù)測什么時候是數(shù)據(jù)從虛擬內(nèi)存搬到物理內(nèi)存,什么時候內(nèi)存緊張又是從物理內(nèi)存搬到虛擬內(nèi)存,因為這是操作系統(tǒng)的事情,它不會讓應(yīng)用程序知道這件事。反正JVM在這種情況下頻繁地觸發(fā)"完全的“垃圾收集就導(dǎo)致性能問題。
- 2 回答
- 0 關(guān)注
- 825 瀏覽
添加回答
舉報