程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JVM內存管理:垃圾搜集器參數精解

JVM內存管理:垃圾搜集器參數精解

編輯:關於JAVA

本文是GC相關的最後一篇,這次LZ只是羅列一下hotspot JVM中垃圾搜集器相關的重點參數,以及各個參數的解釋。廢話不多說,這就開始。

垃圾搜集器選擇參數

UseSerialGC:開啟此參數使用serial & serial old搜集器(client模式默認值)。

UseParNewGC:開啟此參數使用ParNew & serial old搜集器(不推薦)。

UseConcMarkSweepGC:開啟此參數使用ParNew & CMS(serial old為替補)搜集器。

UseParallelGC:開啟此參數使用parallel scavenge & parallel old搜集器(server模式默認值)。

UseParallelOldGC:開啟此參數在年老代使用parallel old搜集器(該參數在JDK1.5之後已無用)。

JVM各個內存區域大小相關參數

Xms:堆的初始值。默認為物理內存的1/64,最大不超1G。

Xmx:堆的最大值。默認為物理內存的1/4,最大不超1G。

Xmn:新生代的大小。

Xss:線程棧大小。

PermSize:永久代初始大小。默認為物理內存的1/64,最大不超1G。

MaxPermSize:永久代最大值。默認為物理內存的1/4,最大不超1G。

NewRatio:新生代與年老代的比例。比如為3,則新生代占堆的1/4,年老代占3/4。

SurvivorRatio:新生代中調整eden區與survivor區的比例,默認為8,即eden區為80%的大小,兩個survivor分別為10%的大小。(備注:這個參數設定是講解復制算法那一章中,解決復制算法內存減半的辦法。eden區即是復制算法一章中80%的那部分,而survivor區則是兩個10%的那部分。)

垃圾搜集器性能通用參數

PretenureSizeThreshold:晉升年老代的對象大小。默認為0,比如設為10M,則超過10M的對象將不在eden區分配,而直接進入年老代。

URL:http://www.bianceng.cn/Programming/Java/201410/45826.htm

MaxTenuringThreshold:晉升老年代的最大年齡。默認為15,比如設為10,則對象在10次普通GC後將會被放入年老代。

DisableExplicitGC:禁用System.gc()。

並行搜集器參數

ParallelGCThreads:回收時開啟的線程數。默認與CPU個數相等。

GCTimeRatio:設置系統的吞吐量。比如設為99,則GC時間比為1/1+99=1%,也就是要求吞吐量為99%。若無法滿足會縮小新生代大小。

MaxGCPauseMillis:設置垃圾回收的最大停頓時間。若無法滿足設置值,則會優先縮小新生代大小,仍無法滿足的話則會犧牲吞吐量。

並發搜集器參數

CMSInitiatingOccupancyFraction:觸發CMS收集器的內存比例。比如60%的意思就是說,當內存達到60%,就會開始進行CMS並發收集。

UseCMSCompactAtFullCollection:這個前面已經提過,用於在每一次CMS收集器清理垃圾後送一次內存整理。

CMSFullGCsBeforeCompaction:設置在幾次CMS垃圾收集後,觸發一次內存整理。

結束語

GC相關系列基本就結束了,本篇文章只是做一個羅列,之後我們一起來進入虛擬機的源碼世界吧。

作者:zuoxiaolong(左潇龍)

出處:博客園左潇龍的技術博客--http://www.cnblogs.com/zuoxiaolong

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved