堆區:
儲存的全部是物件,每個物件都包含乙個與之對應的class的資訊。(class的目的是得到操作指令)
vm只有乙個堆區(heap)被所有執行緒共享,堆中不存放基本型別和物件引用,只存放物件本身
棧區:每個執行緒包含乙個棧區,棧中只儲存基礎資料型別的物件和自定義物件的引用(不是物件),物件都存放在堆區中
每個棧中的資料(原始型別和物件引用)都是私有的,其他棧不能訪問。
棧分為3個部分:基本型別變數區、執行環境上下文、操作指令區(存放操作指令)。
方法區:
又叫靜態區,跟堆一樣,被所有的執行緒共享。方法區包含所有的class和static變數。
方法區中包含的都是在整個程式中永遠唯一的元素,如class,static變數。
JVM記憶體分配
堆區 1.儲存的全部是物件,每個物件都包含乙個與之對應的class的資訊。class的目的是得到操作指令 2.jvm只有乙個堆區 heap 被所有執行緒共享,堆中不存放基本型別和物件引用,只存放物件本身 棧區 1.每個執行緒包含乙個棧區,棧中只儲存基礎資料型別的物件和自定義物件的引用 不是物件 物件...
JVM記憶體分配演算法
1.gc演算法 2.g1演算法 gc演算法 keywords 可達性分析,gcroot向下搜尋 使用有向圖將引用型別標記出來,使用gcroot當做根節點,當gcroot有指向的時候說明有引用 可達性分析 銷毀呼叫 finalize 放入f queue 只有一次 1 標記清除演算法 在每乙個大塊空間當...
jvm 物件記憶體分配方式總結
通常來說關於jvm對於物件的記憶體分配,只要到堆內分配一般就over了,但是在很多人的部落格或者帖子中又說了一些其他的分配,比如棧內分配等等,搞的自己有點眼暈,索性就將jvm記憶體分配的方式統統查了一遍,然後總體上給縷一下。一來是方便自己,權當讀書筆記,二來希望有人能一起討論下。jvm在記憶體區域中...