2 回答

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