29.1、前文回顧
在今天的文章,我們將通過代碼演示來展示年輕代的Young GC是如何發生的。同時,我們還將指導大家如何在JVM參數中配置打印對應的GC日志。接下來,我們將通過分析GC日志,逐步解析JVM的垃圾回收機制是如何運作的。
29.2、不可不知的JVM參數設置技巧
首先,根據我們之前的學習,我們知道,在系統運行過程中創建的對象,通常都是優先分配在新生代中的Eden區域。當然,這是針對于非大對象的情況。
具體來說,新生代中除了Eden區域,還有兩塊名為Survivor的區域。默認情況下,Eden區域占據新生代的80%,而每塊Survivor區域則各占據新生代的10%
比如我們用以下JVM參數來運行代碼:
-XX:NewSize=5242880 -XX:MaxNewSize=5242880 -XX:InitialHeapSize=10485760 -XX:MaxHeapSize=10485760 -XX:SurvivorRatio=8 -XX:PretenureSizeThreshold=10485760 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
上述參數是基于JDK 1.8版本進行設置的,不同版本的JDK可能會有不同的參數名稱,但它們的基本含義是相似的。
在這段文本中,“-XX:InitialHeapSize"和”-XX:MaxHeapSize"分別代表初始堆大小和最大堆大小。“-XX:NewSize"和”-XX:MaxNewSize"則分別表示初始新生代大小和最大新生代大