JVM学习笔记二:JVM参数
生活随笔
收集整理的這篇文章主要介紹了
JVM学习笔记二:JVM参数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
所有線程共享的內(nèi)存主要有兩塊:堆內(nèi)存和方法區(qū)。
其中堆內(nèi)存分為兩塊:新生代Young generation(Eden區(qū)、From Survivor區(qū)、To Survivor區(qū))、老年代Tenured generation。
方法區(qū)有人也稱之“永久代”,但是它們并不等同。方法區(qū)是JVM的規(guī)范,而永久代是該規(guī)范的一種實現(xiàn)方式。從jdk1.7開始已經(jīng)逐步去除“永久代”,在JDK8中取而代之的是“元空間”(Metaspace)。
元空間與永久代之間最大的區(qū)別在于:元空間并不在虛擬機中,而是使用本地內(nèi)存。因此,默認情況下,元空間的大小僅受本地內(nèi)存限制
下面是JVM的一些主要參數(shù):
1. 基本參數(shù)
| -XX:+ | 打開 |
| -XX:- | 關(guān)閉 |
2. 內(nèi)存大小配置參數(shù)
| -Xms | 初始堆內(nèi)存大小 |
| -Xmx | 最大堆內(nèi)存大小 |
| -Xmn | 年輕代內(nèi)存大小 |
| -Xss | 線程私有的虛擬機棧大小 |
| -XX:MaxPermSize=64m | 永久代最大值 |
| -XX:PermSize | 永久代初始值 |
| -XX:MetaspaceSize | 元空間初始大小 |
| -XX:MaxMetaspaceSize | 元空間最大值 |
| -XX:MaxDirectMemorySize | 直接內(nèi)存大小,默認與Java堆最大值(-Xmx)一樣 |
3. JVM調(diào)試參數(shù)
| -verbose:gc | 記錄GC運行及運行時間 |
| -XX:+PrintGCDetails | 記錄GC運行時的詳細數(shù)據(jù)信息,以及在進程結(jié)束時打印當前的內(nèi)存各區(qū)域分配情況。 |
| -XX:+PrintGCTimeStamps | 打印垃圾收集時間戳 |
| -Xloggc:{gcLogPath} | gc日志存放路徑 |
| -XX:+HeapDumpOnOutOfMemoryError | 在內(nèi)存溢出的時候生成Heap dump文件 |
| -verbose:class、-XX:+TraceClassLoading | 查看類加載信息(要求Product版虛擬機) |
| -XX:+TraceClassUnLoading | 查看類卸載信息(要求FastDebug版虛擬機) |
| -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 | 用于遠程調(diào)試 |
4. 垃圾收集器
| -XX:+UseSerialG | 使用Serial+Serial Old的收集器組合進行內(nèi)存回收。 |
| -XX:+UseParNewGC | 使用ParNew+Serial Old的收集器組合進行內(nèi)存回收。 |
| -XX:+UseConcMarkSweepGC | 使用ParNew+CMS+Serial Old的收集器組合進行內(nèi)存回收。Serial Old作為出現(xiàn)Concurrent Mode Failure失敗后的后備收集器使用。 |
| -XX:+UseParallelGC | 使用Parallel Scavenge+Serial Old(PS Mark Sweep)收集器組合進行內(nèi)存回收。 |
| -XX:+UseParallelOldGC | 使用Parallel Scavenge+Parallel Old收集器組合進行內(nèi)存回收。 |
5. JVM調(diào)優(yōu)參數(shù)
| -XX:SurvivorRatio | 新生代中Eden區(qū)域和Survivor區(qū)域(單個Survivor)的容量比值,默認為8 |
| -XX:NewRatio | 堆內(nèi)存中老生代和年輕代的容量比值。例:NewRatio=2,表明old:new=2:1 |
| -XX:PretenureSizeThreshold | 直接晉升到老年代的對象大小,大于該值的對象直接在老年代分配。 |
| -XX:MaxTenuringThreshold | 對象在新生代中能存活的最大年齡。 |
| -XX:+UseAdaptiveSizePolicy | 動態(tài)調(diào)整Java堆中各個區(qū)域的大小以及進入老年代的年齡(限Parallel Scaverge收集器) |
| -XX:+HandlePromotionFailure | 允許老年代分配擔保失敗,開啟后可以冒險YGC。 |
| -XX:ParallelGCThreads | 設(shè)置并行GC時進行內(nèi)存回收的線程數(shù) |
| -XX:GCTimeRatio | 默認為99,即允許1%的GC時間。GC時間占總時間的比例由公式1/(1+GCTimeRatio)得出(限Parallel Scaverge收集器) |
| -XX:MaxGCPauseMillis | 設(shè)置GC的最大停頓時間(限Parallel Scaverge收集器) |
| -XX:+CMSInitialingOccupancyFraction | 設(shè)置CMS收集器在老年代空間被使用多少后觸發(fā)Full GC。默認值是68,即68%。(限CMS收集器) |
| -XX:+UseCMSCompactionAtFullCollection | 設(shè)置CMS在完成垃圾收集后進行一次內(nèi)存碎片整理。(限CMS收集器) |
| -XX:+CMSFullGCsBeforeCompaction | 設(shè)置CMS執(zhí)行多少次GC后,下次GC時進行一次內(nèi)存碎片整理,默認為0。即每次都整理。 |
| -Xnoclassgc | 不回收無用類 |
轉(zhuǎn)載于:https://www.cnblogs.com/znicy/p/6882424.html
總結(jié)
以上是生活随笔為你收集整理的JVM学习笔记二:JVM参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017年天津市大学生数学竞赛试题 (理
- 下一篇: SVN使用规范