千鋒(feng)教(jiao)育-做有情(qing)懷、有良心、有品質的職業教(jiao)育機構
1. JVM堆(dui)設(she)(she)置參數 針(zhen)對JVM堆(dui)的(de)設(she)(she)置,一般(ban)可以通過-Xms -Xmx限定其最(zui)小、最(zui)大值(zhi),為(wei)了防止垃(la)圾(ji)收集器在最(zui)小、最(zui)大之間收縮堆(dui)而產(chan)生額外的(de)時(shi)間,通常把最(zui)大、最(zui)小設(she)(she)置為(wei)相同(tong)的(de)值(zhi);
2. 年(nian)輕代(dai)和(he)年(nian)老代(dai)將根據默認的比例(1:2)分配堆內存 可(ke)以(yi)(yi)通(tong)過調整二(er)者(zhe)之間的比率NewRadio來調整二(er)者(zhe)之間的大(da)(da)小(xiao),也可(ke)以(yi)(yi)針對(dui)回收代(dai)。比如年(nian)輕代(dai),通(tong)過 -XX:newSize -XX:MaxNewSize來設置其(qi)絕(jue)對(dui)大(da)(da)小(xiao)。同樣,為了防(fang)止年(nian)輕代(dai)的堆收縮,我們通(tong)常會把-XX:newSize -XX:MaxNewSize設置為同樣大(da)(da)小(xiao)。
3. 年輕代和年老代值大小
3.1 更(geng)大(da)的(de)年(nian)輕代(dai)必然導致更(geng)小的(de)年(nian)老(lao)代(dai),大(da)的(de)年(nian)輕代(dai)會(hui)延長普(pu)通(tong)GC的(de)周期,但會(hui)增加每(mei)次GC的(de)時(shi)間;小的(de)年(nian)老(lao)代(dai)會(hui)導致更(geng)頻(pin)繁的(de)Full GC。
3.2 更(geng)小的(de)(de)年(nian)(nian)輕代(dai)(dai)必(bi)然導(dao)致更(geng)大(da)年(nian)(nian)老代(dai)(dai),小的(de)(de)年(nian)(nian)輕代(dai)(dai)會導(dao)致普通GC很頻繁,但(dan)每次的(de)(de)GC時間會更(geng)短;大(da)的(de)(de)年(nian)(nian)老代(dai)(dai)會減少Full GC的(de)(de)頻率。 如何選擇應(ying)該依賴(lai)應(ying)用程序對(dui)(dui)(dui)象(xiang)生命周(zhou)期的(de)(de)分布情況: 如果應(ying)用存(cun)在大(da)量的(de)(de)臨時對(dui)(dui)(dui)象(xiang),應(ying)該選擇更(geng)大(da)的(de)(de)年(nian)(nian)輕代(dai)(dai);如果存(cun)在相(xiang)對(dui)(dui)(dui)較多(duo)的(de)(de)持久對(dui)(dui)(dui)象(xiang),年(nian)(nian)老代(dai)(dai)應(ying)該適當增大(da)。但(dan)很多(duo)應(ying)用都沒(mei)有這樣明(ming)顯的(de)(de)特性。
3.3 在抉擇(ze)時應該根 據以(yi)下兩(liang)點:
(1). 本著Full GC盡量少的(de)原則,讓年老代盡量緩存常用對象,JVM的(de)默認比例1:2也(ye)是這個道理 。
(2). 通過觀察應用一段時間,看(kan)其他在(zai)峰值時年老(lao)代(dai)會(hui)占(zhan)多少(shao)內存,在(zai)不(bu)影響Full GC的前提下,根(gen)據(ju)實(shi)際情況加(jia)大年輕代(dai),比(bi)如可以把比(bi)例控制(zhi)在(zai)1:1。但應該給年老(lao)代(dai)至少(shao)預留1/3的增長空間。
4. 在配(pei)置較(jiao)好的機器上(比(bi)如多(duo)核、大內存),可(ke)以為年老代(dai)選擇并(bing)行收集(ji)算法:-XX:+UseParallelOldGC 。
5. 線(xian)(xian)程(cheng)堆棧的設置 每個線(xian)(xian)程(cheng)默(mo)認會開啟1M的堆棧,用(yong)于存放棧幀、調用(yong)參數、局(ju)部變量等,對大多數應用(yong)而(er)言這個默(mo)認值太了(le),一般256K就足(zu)用(yong)。 理論上(shang),在內存不變的情況下,減少每個線(xian)(xian)程(cheng)的堆棧,可以產(chan)生(sheng)更多的線(xian)(xian)程(cheng),但這實際上(shang)還受限(xian)于操作(zuo)系統。
上一篇
存儲過程如何進行優化?相關推薦