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