場(chǎng)景1:Full GC時(shí)間太長(zhǎng)
(1)降低堆內(nèi)存大小玫锋。這樣能增加full gc的次數(shù)挠乳,但每次full gc的時(shí)間會(huì)降低
(2)定時(shí)出發(fā)full gc权薯。如果full gc的頻率不高,如十幾個(gè)小時(shí)才觸發(fā)一次睡扬,則可以考慮做個(gè)定時(shí)器盟蚣,顯式地調(diào)用System.gc()進(jìn)行full gc。
場(chǎng)景2:經(jīng)常發(fā)生OutOfMemory內(nèi)存溢出
(1)java.lang.OutOfMemoryError: Java heap space
可以參考我的另一篇文章https://blog.csdn.net/chenglibility/article/details/107348928
(2)調(diào)整直接內(nèi)存大小卖怜。這種情況java堆內(nèi)存夠用屎开,但整個(gè)服務(wù)器內(nèi)存溢出,可能是NIO的一些用法會(huì)導(dǎo)致分配了過多的堆外內(nèi)存马靠,即直接內(nèi)存奄抽。可以通過降低直接內(nèi)存大小來防止這個(gè)情況甩鳄。具體方法為調(diào)整-XX:MaxDirectMemorySize
場(chǎng)景3:虛擬機(jī)經(jīng)常崩潰
(1)檢查調(diào)用外系統(tǒng)是否有大量線程等待逞度。若外系統(tǒng)響應(yīng)時(shí)長(zhǎng)較長(zhǎng),則本系統(tǒng)會(huì)積壓大量未結(jié)束的請(qǐng)求妙啃,超過虛擬機(jī)承受能力而導(dǎo)致崩潰档泽。