java jvm兩種存儲(chǔ)區(qū)的類型知識(shí)點(diǎn)講解
我們知道在jvm中存放了不少數(shù)據(jù),那么存放數(shù)據(jù)的地方叫做存儲(chǔ)區(qū)。想必大家還不知道存儲(chǔ)區(qū)是分為兩種類型的,常量緩沖池和方法區(qū)。相信很多人還沒有接觸到這個(gè)概念,本篇對(duì)java中jvm的存儲(chǔ)區(qū)進(jìn)行的內(nèi)容的整理,下面一起來看看這兩種存儲(chǔ)取的概念和區(qū)別吧。
1、分類
JVM有兩種類型的存儲(chǔ)區(qū):常量緩沖池和方法區(qū)。常量緩沖池用于存儲(chǔ)類名、方法名和字段名以及字符串常量。方法區(qū)用于存儲(chǔ)Java方法的字節(jié)碼。JVM規(guī)范中沒有規(guī)定這兩個(gè)存儲(chǔ)區(qū)域的具體實(shí)現(xiàn)。因此,Java應(yīng)用程序的存儲(chǔ)布局必須在運(yùn)行過程中確定,這取決于具體平臺(tái)的實(shí)現(xiàn)。
JVM是對(duì)Java字節(jié)代碼定義的獨(dú)立平臺(tái)的規(guī)格說明,是Java平臺(tái)獨(dú)立性的基礎(chǔ)。目前JVM還存在一些限制和不足,需要進(jìn)一步完善,但無論如何,JVM的思想都是成功的。
2、比較分析
將Java源程序想象為我們的C++源程序,Java源程序編譯后生成的字節(jié)代碼相當(dāng)于C++源程序編譯后的80x86機(jī)器代碼(二進(jìn)制程序文件),JVM虛擬機(jī)相當(dāng)于80x86計(jì)算機(jī)系統(tǒng)在80x86CPU運(yùn)行的是機(jī)器代碼,在Java解釋器運(yùn)行的是Java字節(jié)代碼。
Java解釋器相當(dāng)于運(yùn)行Java字節(jié)碼的CPU,但這種CPU不是通過硬件實(shí)現(xiàn)的,而是通過軟件實(shí)現(xiàn)的。Java解釋器實(shí)際上是特定平臺(tái)下的應(yīng)用程序。只要實(shí)現(xiàn)了特定平臺(tái)下的解釋器程序,Java字節(jié)碼就可以通過解釋器程序在該平臺(tái)下運(yùn)行,這是Java跨平臺(tái)的根本。目前,并非所有平臺(tái)下都有相應(yīng)的Java解釋器程序,這也是Java不能在所有平臺(tái)下運(yùn)行的原因,只能在實(shí)現(xiàn)Java解釋器程序的平臺(tái)下運(yùn)行。
知識(shí)點(diǎn)擴(kuò)充:
JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。Java虛擬機(jī)包括一套字節(jié)碼指令集、一組寄存器、一個(gè)棧、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域。 JVM屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使Java程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。JVM在執(zhí)行字節(jié)碼時(shí),實(shí)際上最終還是把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。
1、JVM是java的核心和基礎(chǔ),在java編譯器和os平臺(tái)之間的虛擬處理器。它是一種利用軟件方法實(shí)現(xiàn)的抽象的計(jì)算機(jī)基于下層的操作系統(tǒng)和硬件平臺(tái),可以在上面執(zhí)行java的字節(jié)碼程序。
2、JVM的體系結(jié)構(gòu):
類裝載器(ClassLoader)(用來裝載.class文件)
執(zhí)行引擎(執(zhí)行字節(jié)碼,或者執(zhí)行本地方法)
運(yùn)行時(shí)數(shù)據(jù)區(qū)(方法區(qū)、堆、java棧、PC寄存器、本地方法棧)
到此這篇關(guān)于java jvm兩種存儲(chǔ)區(qū)的類型知識(shí)點(diǎn)講解的文章就介紹到這了,更多相關(guān)java之jvm兩種存儲(chǔ)區(qū)的類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
shiro實(shí)現(xiàn)單點(diǎn)登錄(一個(gè)用戶同一時(shí)刻只能在一個(gè)地方登錄)
這篇文章主要介紹了shiro實(shí)現(xiàn)單點(diǎn)登錄(一個(gè)用戶同一時(shí)刻只能在一個(gè)地方登錄)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-08-08
查看本地啟動(dòng)SpringBoot的本地端口號(hào)的幾種方式
這篇文章主要介紹了查看本地啟動(dòng)SpringBoot的本地端口號(hào)的幾種方式,文中通過代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-10-10
Spring-AOP-ProceedingJoinPoint的使用詳解
這篇文章主要介紹了Spring-AOP-ProceedingJoinPoint的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Java線程池如何實(shí)現(xiàn)精準(zhǔn)控制每秒API請(qǐng)求
這篇文章主要介紹了Java線程池如何實(shí)現(xiàn)精準(zhǔn)控制每秒API請(qǐng)求問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
詳解SpringCloud是如何動(dòng)態(tài)更新配置的
spring cloud在config配置管理的基礎(chǔ)上,提供了consul config的配置管理和動(dòng)態(tài)監(jiān)聽,那么這里面到底是怎樣實(shí)現(xiàn)的,本文將為你揭秘,感興趣的小伙伴可以跟著小伙伴一起來學(xué)習(xí)2023-06-06
Java實(shí)現(xiàn)Socket的TCP傳輸實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)Socket的TCP傳輸,實(shí)例分析了java通過socket實(shí)現(xiàn)TCP傳輸?shù)南嚓P(guān)技巧,需要的朋友可以參考下2015-05-05

