JVM分爲哪些區 , 每一個區是幹嘛的?

線程執行方法都會創建一個棧陣 , 用來存儲局部變量 , 操作棧 , 動態鏈接 ,方法出口等信息 ,調用方法時執行入棧 , 方法返回式執行出棧

本地方法棧

與棧類似 ,也是用來腦村執行方法的信息 , 執行java方法是使用棧 ,執行native方法時使用本地方法棧

程序計數器

保存着當前線程執行的字節碼位置 ,每個線程工作時都有獨立的計數器 ,只爲執行java方法服務 ,執行native方法時,程序計數器爲空

JVM內存管理最大的一塊 ,對被線程共享 ,目的是存放對象的實例 ,幾乎所有的對象實例都會放在這裏 ,當堆沒有可用空間時 ,會拋出OOM異常, 根據對象的存活週期不同 ,JVM吧對象進行分代管理 , 由垃圾回收器進行垃圾的回收管理

方法區

又稱非堆區 ,用於存儲已別虛擬機加載的類信息 ,常量 ,靜態變量 ,即使編譯器優化後的代碼等數據 ,1.7的永久代和1.8的元空間都是方法區的一種實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章