1.jvm記憶體組成
堆:除基本型別之外所有new的物件儲存在堆。
棧:儲存一些區域性變數 +臨時儲存
本地方法棧:只要支援其他語言的方法,儲存native方法的狀態
方法區:存放類資訊,靜態資訊,final常量資訊,屬性,方法等。主要存放於持久代。
程式計數器:pc
2.**
堆是由新生代和舊生代組成,new物件都是在新生代中分配空間。
新生代由eden ,survivor組成。survivor(fromspace+tospace)
新生代中的資料存活時間較短,舊生代存活時間相對長。
2.1新生代gc:
新生代存活時間較短,直接用copying演算法**。
copying演算法:掃瞄新生代存活物件,將存活物件複製到一塊新的未使用空間。
新生代採用空閒指標控制觸發gc機制,指標保持最後乙個物件的分配空間在新生代中。但new是無空間,則觸發gc**。新生代空間不夠時,空間分配會由eden-->survivor-- ->舊生代
新生代gc分類:序列gc,並行gc,並行**gc
2.2舊生代gc:
舊生代中的物件存活時間較長,用mark演算法**。
mark演算法:掃瞄mark存活的物件,**未標記的物件**,**後對空餘的空間合併,或者標記便於下次使用,避免碎片影響效率。
舊生代gc分類:序列gc,並行gc,併發gc
序列gc,單執行緒,等待時間長,適用單cpu,新生代較小
並行|併發gc,多執行緒,速度快
JVM記憶體結構與GC
前段時間沒有好好準備,錯過了 金三銀四 因此最近開始惡補各方面知識,決定先從jvm記憶體結構和gc開始。jvm記憶體結構分為如下幾部分 前兩項為執行緒共享,後三項為執行緒私有的 1 方法區 儲存已經被虛擬機器載入的類資訊 常量 jit 及時編譯器just in time 編譯後的 以及類變數 sta...
JVM的GC中物件的age以及JVM記憶體的分配策略
young generation中的gc叫minor gc,eden中的物件拷貝到s。old generation中的gc叫full gc。age,官方文件預設為15,age也相當於計數器,每次gc,age 1,age代表gc的次數。在gc時,s中的物件的age一樣的這批資料大於s空間1 2的話,此...
JVM系列二 GC策略 記憶體申請 物件衰老
jvm裡的gc garbage collection 的演算法有很多種,如標記清除收集器,壓縮收集器,分代收集器等等,詳見hotspot vm gc 的種類 現在比較常用的是分代收集 generational collection,也是sun vm使用的,j2se1.2之後引入 即將記憶體分為幾個區...