java虛擬機啓動參數設置

虛擬機中除了程序計數器不會發生內存溢出,其他幾個內存區域都可能發生內存溢出。
可在eclipseIDE中的Debug/Debug Configuration 中設置啓動參數:
堆設置:
-Xms20m -Xmx20m :這兩個參數設置虛擬機堆內存大小,前面是堆的最小值,後面是堆的最大值,設置的一樣可避免堆內存自動擴展。

-Xmn2g:設置年輕代大小爲2G.整個堆大小=年輕代大小 + 年老代大小 + 持久代大小.持久代一般固定大小爲64m,所以增大年輕代後,將會減小年老代大小.此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8.

-Xss128k:設置每個線程的堆棧大小.JDK5.0以後每個線程堆棧大小爲1M,以前每個線程堆棧大小爲256K.更具應用的線程所需內存大小進行 調整.在相同物理內存下,減小這個值能生成更多的線程.但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右.
-XX:NewRatio=n:設置年輕代和年老代的比值.如:爲3,表示年輕代與年老代比值爲1:3,年輕代佔整個年輕代年老代和的1/4
-XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值.注意Survivor區有兩個.如:3,表示Eden:Survivor=3:2,一個Survivor區佔整個年輕代的1/5

棧和方法區設置:
-Xoss :設置本地方法棧大小。對於HotSpot來說,並不區分虛擬機棧和本地方法棧,此參數實際上是無效的。棧容量只由-Xss參數設定。
-XX:MaxPermSize:最大方法區容量
-XX:PermSize:設置方法區大小

-XX:+HeapDumpOnOutOfMemoryError
垃圾回收統計信息:
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename

GC收集器的類型:
JVM給了三種選擇:串行收集器,並行收集器,併發收集器,但是串行收集器只適用於小數據量的情況,所以這裏的選擇主要針對並行收集器和併發收集器.默認 情況下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在啓動時加入相應參數.JDK5.0以後,JVM會根據當前系統配置進行判斷.
1.並行收集器:以到達一定的吞吐量爲目標,適用於科學技術和後臺處理等。
-XX:+UseParallelGC:選擇垃圾收集器爲並行收集器.此配置僅對年輕代有效.即上述配置下,年輕代使用併發收集,而年老代仍舊使用串行收集.
-XX:ParallelGCThreads=20:配置並行收集器的線程數,即:同時多少個線程一起進行垃圾回收.此值最好配置與處理器數目相等.
-XX:+UseParallelOldGC:配置年老代垃圾收集方式爲並行收集.JDK6.0支持對年老代並行收集.
-XX:MaxGCPauseMillis=100:設置每次年輕代垃圾回收的最長時間,如果無法滿足此時間,JVM會自動調整年輕代大小,以滿足此值.
-XX:+UseAdaptiveSizePolicy:設置此選項後,並行收集器會自動選擇年輕代區大小和相應的Survivor區比例,以達到目標系統規定的最低相應時間或者收集頻率等,此值建議使用並行收集器時,一直打開.
-XX:GCTimeRatio=n:設置垃圾回收時間佔程序運行時間的百分比.公式爲1/(1+n)
2.併發收集器:保證系統的響應時間,減少垃圾收集時的停頓時間.適用於應用服務器,電信領域等.
-XX:+CMSIncrementalMode:設置爲增量模式.適用於單CPU情況.
-XX:ParallelGCThreads=n:設置併發收集器年輕代收集方式爲並行收集時,使用的CPU數.並行收集線程數.
發佈了23 篇原創文章 · 獲贊 0 · 訪問量 5075
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章