回憶一下
日誌工具上網搜下
各分割槽的大小對gc的效能影響很大。如何將各分割槽調整到合適的大小,分析活躍資料的大小是很好的切入點。
活躍資料的大小是指,應用程式穩定執行時長期存活物件在堆中占用的空間大小,也就是full gc後堆中老年代占用空間的大小。可以通過gc日誌中full gc之後老年代資料大小得出,比較準確的方法是在程式穩定後,多次獲取gc資料,通過取平均值的方式計算活躍資料的大小。活躍資料和各分割槽之間的比例關係如下
總堆:3-4倍老年代活躍資料大小
新生代:1-1.5倍老年代躍資料資料大小
老年代:2-3倍老年代躍資料資料大小
永久代:1.2-1.5倍full gc 後資料大小
比如在gc 日誌中得出老年代的平均full gc 後的大小為100m 永久代為200m
那麼總堆:4*100m=400m
新生代:1.5*100m=150m
老年代:400m-150m = 250m
永久代:200m*1.5 = 300m
以上資料只是乙個粗略的初始值,具體還是要根據程式情況進行優化。
JVM GC(分代收集演算法)
為什麼是分代呢,因為他在每個代中採用的不同的演算法 堆的記憶體結構 總體來說 1.引用計數法 簡單來說當這個引用計數為0時 清理 2 複製演算法 copying 新生區的演算法 年輕代中使用的是minor gc,這種gc演算法採用的是複製演算法 copying 簡單來說就是將倖存者從a複製到b,這種...
每日五分鐘,玩轉 JVM GC 概覽
gc garbage collection 是我們在學習 jvm 的過程中不可避免的一道坎,接下來,我們就來系統的學習一下 gc。做一件事情之前,我們一定要去知道我們為什麼要去做,這裡不僅僅指 gc,更適用我們日常的學習和生活,知其然,知其所以然,方能百戰不殆。下面我們先去了解為什麼要有 gc,以及...
檢視JVM各個代的記憶體狀態
在linux執行 jmap heap pid 可以看到如下資訊 attaching to process id 23990,please wait.warning the type const char declared in the remote vm in vmstructs localhots...