日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java内存四大区,jvm基础-内存区域

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java内存四大区,jvm基础-内存区域 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.運行時數據區

java虛擬機在執行java程序的過程中會爸它所管理的內存分為若干個不同的數據區域

jvm內存主要分為堆、程序計數器、方法區、虛擬機棧喝本地方法棧,直接內存等。

java方法的運行和虛擬機棧

虛擬機棧是線程運行java方法所需要的數據,指令,返回地址。

每一個方法執行都會打包成一個棧幀。

棧是先進后出的數據結構。

棧幀四個區域

局部變量表:

操作數據棧

動態連接

返回地址

程序計數器

較小的內存空間,當前線程執行的字節碼的行號指示器,各線程之間獨立存儲,互不影響。

由于java是多線程語言,當執行線程數量超過cpu的核心數,線程之間會根據時間片輪詢cpu資源。那么退出的線程就需要一個單獨的計數器去記錄下一條運行的指令。它也是為一個不會oom的內存區域。所有的方法都有程序計數器(native 本地方法除外)

本地方法棧

本地方法棧跟java虛擬機棧的功能類似

方法區

提供各個線程共享的運行時內存區域。它存儲每一個類的結構信息,例如 運行時常量池字段和方法數據,構造函數和普通方法的字節碼內容,類、實例、接口初始化的特殊方法、jdk 1.7 永久代 1.8元空間

運行時常量池

每一個類,接口的常量池的運行時表現形式,包括若干不同的常量,必須在運行期解析后才能獲得方法或者字段的引用。

是jvm內存區域中最大的一塊,申請的所有對象都在堆。垃圾回收也就是回收堆。

直接內存

jvm在運行的時候,會從系統中申請大塊的堆內存。

jvm運行的總體流程

jvm在操作系統上啟動申請內存,先進行運行時數據區的初始化,然后把類加載到方法區,最后執行方法。方法的執行和退出過程在內存的提現上是虛擬機棧中棧幀的入棧和出棧。同時在方法的執行過程中創建的對象一般情況下是放在堆中,最后堆中的對象也是需要進行GC。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java内存四大区,jvm基础-内存区域的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。