Re: [問題] JVM的校調

看板java作者 (KekeMonster)時間10年前 (2014/09/23 10:48), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《ireullin (raison detre)》之銘言: : 抱歉 : 我想釐清一下我的問題 : 所以如果問了奇怪的東西請大家多多包涵 : 謝謝網友提供的圖 : http://imgur.com/Jm0gPUe
: 不知道這張圖的出處是在? : 是否還有其他資訊可參考? : 所以 serial, ParNew, Parallel Scavenge : 主要是負責young generation : 而CMS, Parallel Old, Serial Old : 負責Tenured generation? : 是指這樣嗎 : 然後JVM其實底下有多個GC在運作? : 只是何時會觸發那一個GC : 並不是我們能決定的? : 若沒有特別去關閉或開啟哪個GC : 則是由JVM自行去決定 : 是這樣嗎? : 我們是否可以得知目前JVM有使用哪幾個GC? 在沒有任何配置的情況下, JVM 會依據版本以及系統資源決定所使用的 GC 演算法, e.g. 32-bit JVM 或者是單核心的系統預設使用單緒演算法; 64-bit JVM 預設使用多緒演算法... etc young/tenured generation 各自只會有一個 GC 演算法的設定, 不是在執行時間讓 JVM 去決定的... 如我之前的回文, 你若要確認目前 JVM 所啟用的 GC 演算法, 可以透過 GC Log 或者是 JConsole : servivor這記憶體有兩塊 : 用意是? : GC演算法中有提到一個 copying algorithm : 是否是這邊採用的? : 所以其他部分都只有使用mark-sweep與mark-compact? Young gen GC 動作就是在 eden 跟 S0 空間中找出尚有參照的物件, 複製到 S1 之後把 eden 跟 S0 清空; 下一個 minor GC 循環則是在 eden 跟 S1 空間中找出尚有參照的物件, 複製到 S0 之後把 eden 跟 S1 清空; 這個複製循環會增加物件的 "歲數", 到達一定的歲數後則是移到 tenured gen... Survivor space 主要的目的就是為了速度, 記憶體空間的互相複製相當的快, 而且也不需要進行 compaction : 有網友推薦 : 直達 Java 虛擬機器-JVM 進階與應用 : 這本我已經在看了 : 可能我沒有讀透 : 其實我這些問題是從這裡頭衍生出來的 : 再請大家賜教了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.59.250.101 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1411440514.A.39B.html

09/23 11:33, , 1F
謝謝您的回答喔^^
09/23 11:33, 1F
文章代碼(AID): #1K8D-2ER (java)
討論串 (同標題文章)
文章代碼(AID): #1K8D-2ER (java)