说一下 JVM 的主要组成部分?及其作用?
生活随笔
收集整理的這篇文章主要介紹了
说一下 JVM 的主要组成部分?及其作用?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- class loader 類加載器:加載類文件到內存。Class loader只管加載,只要符合文件結構就加載,至于能否運行,它不負責,那是有Exectution Engine 負責的。
- exection engine :執行引擎也叫解釋器,負責解釋命令,交由操作系統執行。
native interface:本地接口。本地接口的作用是融合不同的語言為java所用。 - Runtimedata area 運行數據區:運行數據區是jvm的重點,我們所有所寫的程序都被加載到這里,之后才開始運行。
- stack:棧也叫棧內存,是java程序的運行區,是在線程創建時創建,它的生命周期跟隨線程的生命周期,線程結束棧內存釋放;對于棧來說不存在垃圾回收的問題,只要線程一結束,該棧就結束。棧中的數據以棧幀的格式存在,棧幀是一個內存區塊,是一個數據集,是一個有關方法和運行期數據的集合,當一個方法A被調用時就產生了一個棧幀F1,并被壓入到棧中,A方法又調用了B方法,于是產生棧幀F2也被壓入棧,執行完畢后,先彈出F2棧幀,再彈出F1棧幀,遵循“先進后出”原則。
- 堆內存:一個JVM實例只存在一個堆內存,堆內存的大小是可以調節的。類的加載器讀取了類文件之后,需要把類、方法、常變量放到堆內存中,以方便執行器執行,堆內存分三部分:永久存儲(用于存放jdk自身攜帶的class,interface的元數據,也就是說它存儲的是運行環境必須的類信息,被裝載至此區域的數據是不會被垃圾回收掉的,只有關閉jvm釋放此區域所占用的內存)區、新生區、老年代
- method area方法區:方法去是被所有線程共享,該區域保存的所有字段和字節方法碼以及一些特殊方法如構造函數,接口代碼也在此定義。
- PC Register 程序計數器:每個線程都有一個程序計數器,就是一個指針,指向方法區中的方法字節碼,由執行引擎讀取下一條指令
?
總結
以上是生活随笔為你收集整理的说一下 JVM 的主要组成部分?及其作用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jdk8中对HashMap做了哪些改变?
- 下一篇: 说一下堆栈的区别?