一、堆分配參數(shù)
-XX:+PrintGC 使用這個參數(shù),虛擬機啟動后,只要遇到GC就會打印日志。
-XX:+UseSerialGC 配置串行回收器
-XX:+PrintGCDetails 可以查看詳細(xì)信息,包括各個區(qū)的情況
-XX:+PrintCommandLineFlags 可以將顯式或隱式傳給虛擬機的參數(shù)輸出
-Xms 設(shè)置Java程序啟動時初始堆大小
-Xmx 設(shè)置Java程序能獲得的最大堆大小
-Xmx20m -Xms5m 示例設(shè)置最大堆大小20M,初始堆大小5M
在實際工作中,我們可以直接將初始的堆大小與最大堆大小設(shè)置相等,這樣的好處是可以減少程序運行時的垃圾回收次數(shù),從而提高性能。
二、新生代的配置
-Xmn:可以設(shè)置新生代的大小,設(shè)置一個比較大的新生代會減少老年代的大小,這個參數(shù)對系統(tǒng)性能以及GC行為有很大的影響,新生代大小一般會設(shè)置整個堆空間的1/3到1/4左右。
-XX:SurvivorRatio:用來設(shè)置新生代中eden空間和from/to空間的比例。含義:-XX:SurvivorRatio=eden/from=eden/to
-XX:NewRatio:設(shè)置新生代和老年代的比例。-XX:NewRatio=老年代/新生代。
總結(jié):不同的堆分布情況,對系統(tǒng)執(zhí)行會產(chǎn)生一定的影響,在實際工作中,應(yīng)該根據(jù)系統(tǒng)的特點作出合理的配置,基本策略:盡可能將對象預(yù)留在新生代,減少老年代的GC次數(shù)。
三、棧配置
Java 虛擬機提供了參數(shù) -Xss 來指定線程的最大??臻g,整個參數(shù)也直接決定了函數(shù)可調(diào)用的最大深度。