GC Roots以及jvm參數

1.什麼是GC Roots?

java中可以作爲GC Roots的對象:①虛擬機棧(棧幀中的局部變量區,也叫作局部變量表)中引用的對象②方法區中的類靜態屬性引用的對象③方法區中常量引用的對象④本地方法棧中native方法引用的對象。通過一系列名爲GC Roots的對象作爲起始點,從這個被稱爲GC Roots的對象開始向下搜索,GC Roots沒有任務引用鏈相連時,則說明此對象不可用,也即給定一個集合的引用作爲根出發,通過引用關係遍歷到的(可到達的)對象就被判定爲存活,沒有被遍歷到的就自然被判定爲死亡。

2.jvm參數類型?

①標配參數:-version等②x參數:-Xint解釋執行,-Xcomp第一次使用就編譯成本地代碼,-Xmixed混合模式③xx參數:Boolean類型:-XX:+或者-某個屬性值,+表示開啓-表示關閉,查看一個正在運行中的java程序,他的某個jvm參數是否開啓具體是多少的命令,jps,jinfo。kv設值類型:-XX:MetaspaceSize=128m

3.常用jvm參數?

①-Xms初始大小內存,默認爲物理內存1/64,等價於-XX:InitialHeapSize

②-Xmx:最大分配內存,默認爲物理內存的1/4,等價於-XX:MaxHeapSize

③-Xss:s設置單個線程棧的大小,一般默認爲512k-1024k等價於-XX:ThreadStackSize

④-Xmn設置年輕代大小

⑤-XX:MetaspaceSize設置元空間,元空間並不在虛擬機中,而是使用本地內存,默認情況下元空間的大小僅受本地內存限制。比如:-Xms128m -Xmx4096m -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC

⑥-XX:+PrintGCDetail:輸出詳細GC收集日誌信息,

⑦-XX:SurvivorRatio:設置新生代中eden和s0/s1空間的比例,默認-XX:SurvivorRatio=8,Eden:s0:s1=8:1:1,修改-XX:SurvivorRatio=4,Eden:s0:s1=4:1:1

⑧-XX:NewRatio:配置年輕代與老年代在堆結構的佔比,默認-XX:NewRatio=2新生代佔1老年代佔2,年輕代佔整個堆的1/3.

⑨-XX:MaxTenuringThreshold=0設置垃圾最大年齡,如果設置爲0的話,則年輕代對象不經過Survivor區,直接進入老年代,對於年老代多的應用,可以提高效率,如果將此值設置爲一個較大值,則年輕代對象會在Survivor多次複製,這樣可以增加對象在年輕代的存活時間,增加在年輕代即被回收的概率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章