jvm內(nèi)存區(qū)域
堆共耍,方法區(qū)吨瞎, 虛擬機棧, 本地方法棧颤诀, 程序計數(shù)器。
程序計數(shù)器
線程私有遗淳,存儲當(dāng)前線程執(zhí)行的字節(jié)碼行號心傀。因為有線程的切換。必須保存線程的當(dāng)前的執(zhí)行點剧包。
虛擬機棧
線程私有,線程執(zhí)行的函數(shù)的信息一铅,包括函數(shù)的局部變量表堕油,動態(tài)鏈接,方法的出口等掉缺。
線程執(zhí)行一個方法,創(chuàng)建一個 棧幀艰毒。方法調(diào)用直到完成搜囱, 就是一個棧幀的如棧和出棧的過程
局部變量表的大小是在編譯時期就確定下來的。不會隨著程序運行動態(tài)改變
如線程在執(zhí)行過程中達到棧的最大深度蜀肘,程序會報stackoverflow。
但是jvm支持動態(tài)的增加虛擬機棧的大小西乖,如果在申請內(nèi)存的時候,內(nèi)存不夠會報 outofmemery的錯誤
本地方法棧
本地方法棧和虛擬機棧的作用相當(dāng)获雕,只是用戶netive方法。
java的堆
線程共享被廓。存放對象的實例子(也不是決定的萝玷。jit和逃逸技術(shù)發(fā)展可以改變這一事實)。
堆是垃圾收集器主要管理的管理對象球碉。 分為新生代和老年代。又可以eden挎春。from survivor 和 to survivor
方法區(qū)
線程共享的區(qū)域豆拨,存放被虛擬機加載類信息,常量施禾,靜態(tài)變量, jit編譯后的代碼
其中有一個運行時常量池邮绿。存放的編譯器生成的字面量和符號引用攀例。
java如何訪問對象
1: 采用句柄的方式
2: 采用指針的方式。 hotspot采用指針的方式粤铭。速度很快。
垃圾回收和內(nèi)存分配
新生代復(fù)制算法
老年代 標(biāo)記 整理
然后分代回收
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者