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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java runtime类 heap_Java 进阶(一) JVM运行时内存模型

發布時間:2024/9/27 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java runtime类 heap_Java 进阶(一) JVM运行时内存模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.JVM運行時數據區域的劃分

a.程序計數器(Program Counter Register)

一塊較小的內存空間,可以看作是當前線程所執行的字節碼的行號指示器。每個線程擁有獨立的一個計數器,如果當前執行的是Native方法,則計數器值為空。

b.JVM棧(Java Virtual Machine Stack)

描述Java方法執行的內存模型,每個方法在執行的同時都會創建一個棧幀(Stacks Frame)用于存儲局部變量表,操作數棧,動態鏈接,方法出口等信息。

每一個方法從調用直至執行完成的過程,就對應一個棧幀在JVM棧中入棧到出棧的過程。

c.本地方法棧(Native Method Stack)

與JVM棧發揮的作用非常相似,區別不過是JVM棧為JVM執行Java方法服務,而本地方法棧為JVM使用到的Native方法服務。

d.Java堆(Java Heap)

Java堆是被所有線程共享的一塊內存區域,在JVM啟動時創建。所有的對象實例以及數組都要在這里分配內存,但是隨著JIT編譯器的發展,漸漸變得不是那么絕對了。

e.方法區(Method Area)

存儲已被JVM加載的類信息,常量,靜態變量,即時編譯器編譯后的代碼等數據。

雖然JVM規范把方法區描述為堆的一個邏輯部分,但它卻有一個別名叫做Non-Heap。

f.運行時常量池(Runtime Constant Pool)

方法區的一部分。Class文件中除了有類的版本,字段,方法,接口等描述信息外,還有一項是常量池,用于存放編譯器生成的各種字面量和符號引用。

g.直接內存(Direct Memory)

不是JVM運行時數據區的一部分,也不是JVM規范中定義的內存區域。

例如:JDK1.4中新引入的NIO(New Input/Output)類,一種基于通道與緩沖區的I/O方式,可以使用Native函數庫直接操作堆外內存,然后通過存儲在Java堆中的DirectByteBuffer對象作為這塊內存的引用,避免了在Java堆和Native堆中來回復制數據。

總結

以上是生活随笔為你收集整理的java runtime类 heap_Java 进阶(一) JVM运行时内存模型的全部內容,希望文章能夠幫你解決所遇到的問題。

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