更新時間:2019-12-11 14:16:17 來源:動力節(jié)點 瀏覽2327次
Java屬于面向?qū)ο蟮木幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進行復雜的編程。
一、虛擬機內(nèi)存圖解
JAVA程序運行與虛擬機之上,運行時需要內(nèi)存空間。虛擬機執(zhí)行JAVA程序的過程中會把它管理的內(nèi)存劃分為不同的數(shù)據(jù)區(qū)域方便管理。
虛擬機管理內(nèi)存數(shù)據(jù)區(qū)域劃分如下圖:
(一)、數(shù)據(jù)區(qū)域分類:
方法區(qū): (Method Area)
虛擬機棧: (VM Stack)
本地方法棧 :(Native Method Stack)
堆: (Heap)
程序計數(shù)器 :(Program Counter Register)
直接內(nèi)存: (Direct Memory)
(二)、說明:
1、程序計數(shù)器
行號指示器,字節(jié)碼指令的分支、循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復(CPU切換),每條線程都需要一個獨立的計數(shù)器,線程私有內(nèi)存互不影響,該區(qū)域不會發(fā)生內(nèi)存溢出異常。
2、虛擬機棧
是線程私有的,聲明周期與線程相同,虛擬機棧是Java方法執(zhí)行的內(nèi)存模型,每個方法被執(zhí)行時都會創(chuàng)建一個棧幀,即方法運行期間的基礎數(shù)據(jù)結構,棧幀用于存儲:局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等,每個方法執(zhí)行中都對應虛擬機棧幀從入棧到處棧的過程。
是一種數(shù)據(jù)結構,是虛擬機中的局部變量表,對應物理層之上的程序數(shù)據(jù)模型。
局部變量表,是一種程序運行數(shù)據(jù)模型,存放了編譯期可知的各種數(shù)據(jù)類型例如:
Boolean、byte、char、short、int、float、long、double、對象引用類型(對象內(nèi)存地址變量,指針或句柄),程序運行時,根據(jù)局部變量表分配棧幀空間大小,在運行中,大小是不變的異常類型:stackOverFlowError 線程請求棧深度大于虛擬機允許深度 OutOfMemory 內(nèi)存空間耗盡無法進行擴展。
3、 本地方法棧
與虛擬機棧類似,虛擬機棧為Java程序服務,本地方法棧支持虛擬機的運行服務,具體實現(xiàn)由虛擬機廠商決定,也會拋出 stackOverFlowError、OutOfMemory異常。
4、堆
是虛擬機管理內(nèi)存中最大的一部分,被所有線程共享,用于存放對象實例(對象、數(shù)組),物理上不連續(xù)的內(nèi)存空間,由于GC收集器,分代收集,所以劃分為:新生代 Eden、From SurVivor空間、To SurVivor空間,allot buffer(分配空間),可能會劃分出多個線程私有的緩沖區(qū),老年代。
5、方法區(qū)
與堆一樣屬于線程共享的內(nèi)存區(qū)域,用于存儲虛擬機加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼(動態(tài)加載OSGI)等數(shù)據(jù)。理論上屬于java虛擬機的一部分,為了區(qū)分開來叫做 Non-Heap非堆。
這個區(qū)域可以選擇不進行垃圾回收,該區(qū)域回收目的主要是常量池的回收,及類型的卸載class,內(nèi)存區(qū)不足時會拋出OutOfMemory異常
運行時常量池:
方法區(qū)的一部分,Class的版本、字段、接口、方法等,及編譯期生成的各種字面量、符號引用,編譯類加載后存放在該區(qū)域。會拋出OutOfMemory異常。
6、直接內(nèi)存
直接內(nèi)存不屬于虛擬內(nèi)存區(qū)域,是一種基于通道與緩沖區(qū)的IO方式,可以使用本地函數(shù)直接分配堆外內(nèi)存,在堆中存儲引用的外部內(nèi)存地址,通過引用完成對直接引用內(nèi)存的操作,1.4之后提供的NIO顯著提高效率,避免了堆內(nèi)存與Native內(nèi)存的來回復制操作,不受虛擬機內(nèi)存控制,會拋出OUtOfMemory異常。
以上就是動力節(jié)點Java培訓機構小編介紹的“Java自學容易嗎?看完這些你就知道了”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。
相關內(nèi)容
相關閱讀