1.gc演算法 2.g1演算法
gc演算法(keywords ,可達性分析,gcroot向下搜尋)
使用有向圖將引用型別標記出來,使用gcroot當做根節點,當gcroot有指向的時候說明有引用(可達性分析)
銷毀呼叫 finalize->放入f-queue (只有一次)
<1>標記清除演算法
在每乙個大塊空間當沒有引用的時候進行刪除,容易造成記憶體小碎片.
<2>複製演算法
edeson:survive:survive=8:1:1
建立一半空間供於使用,剩下一半空間供於清除後複製到另外一邊使用(新生代)
<3>標記整理演算法
清除的時候向一端移動清除 (老年代)
物件分配演算法
<1>大物件進入老年代
<2>長期的物件進入老年代
<3>時間過長達到進入老年代
tip:動態分配空間擔保(新生代缺少的動態分配空間將由老年代進行分配空間擔保)
**的標準:
<1>給物件賦予了空值.
<2>給物件賦予了新值,重新分配了空間.
記憶體洩漏的情況
<1>在堆中申請的空間未被釋放.(可解決)
<2>物件不使用了但仍然在記憶體中保留著.
g1記憶體**方法???
JVM記憶體分配
堆區 儲存的全部是物件,每個物件都包含乙個與之對應的class的資訊。class的目的是得到操作指令 vm只有乙個堆區 heap 被所有執行緒共享,堆中不存放基本型別和物件引用,只存放物件本身 棧區 每個執行緒包含乙個棧區,棧中只儲存基礎資料型別的物件和自定義物件的引用 不是物件 物件都存放在堆區中...
JVM記憶體分配
堆區 1.儲存的全部是物件,每個物件都包含乙個與之對應的class的資訊。class的目的是得到操作指令 2.jvm只有乙個堆區 heap 被所有執行緒共享,堆中不存放基本型別和物件引用,只存放物件本身 棧區 1.每個執行緒包含乙個棧區,棧中只儲存基礎資料型別的物件和自定義物件的引用 不是物件 物件...
jvm 物件記憶體分配方式總結
通常來說關於jvm對於物件的記憶體分配,只要到堆內分配一般就over了,但是在很多人的部落格或者帖子中又說了一些其他的分配,比如棧內分配等等,搞的自己有點眼暈,索性就將jvm記憶體分配的方式統統查了一遍,然後總體上給縷一下。一來是方便自己,權當讀書筆記,二來希望有人能一起討論下。jvm在記憶體區域中...