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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 常量区存放 new_java常量池与对象存储

發布時間:2024/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 常量区存放 new_java常量池与对象存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 數據存儲位置

我們先來談談數據的存儲位置,有五個地方可以存儲數據

(1)寄存器:這是最快的存儲區,因為它位于不同于其他存儲區的地方-處理器內部。對于程序員來說是透明的不能直接控制,并且數量有限。

(2)堆棧:位于通用RAM(隨機訪問存儲器)中,通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針若向下移動,則分配新的內存;反之,則釋放那些內存。java的對象引用存儲在堆棧中。

(3)堆:一種溝通用的內存池(也位于RAM區),用于存放所有的java對象。堆不同于堆棧的好處是:編譯器不需要知道存儲的數據在對立面存活多長時間。因此在堆中分配存儲有很大的靈活性。當需要一個對象時,只需要new寫一個簡單的代碼,當執行這個代碼時,會自動在堆里面進行存儲分配。

(4)常量存儲:常量值通常會放到程序代碼內部,這樣做的是安全的的,因為它永遠不會被改變。

(5)非RAM存儲:如果數據完全存活于程序之外,那么他可以不受任何程序的控制,在程序沒有運行時也可以存在。其中最基本的兩個例子就是流對象和持久化對象。

二 java內存區域

上圖為java虛擬機運行時數據區。

(1)程序計數器:線程私有的。可以看成是當前線程所執行字節碼的行號指示器。在虛擬機的概念模型里,通過改變這個程序計數器來選取嚇一跳需要執行的字節碼指令。

(2)java虛擬機棧:線程私有的。虛擬機棧是java方法執行的內存模型:每個方法在執行的同時會創建一個棧幀用于存儲局部變量表、操作數棧、動態鏈接、方法出口等信息。每一個方法從調用到完成的過程,就對應著一個棧幀在虛擬機棧中入棧到出棧的過程。局部變量表存放了編譯器可預知的各種個基本數據類型、對象引用個指向了一條字節碼指令的地址。

(3)本地方法棧:線程私有的。與虛擬機棧的作用類似,虛擬機棧為java方法提供服務,而本地方法棧則為虛擬機使用到的NATIVE方法服務。

(4)java堆:線程共享的。幾乎所有的java對象實例都在這里分配存儲。java堆是垃圾回收器管理的主要區域。

(5)方法區:線程共享的。用于存儲已被虛擬機加載的類信息、常量、靜態變量、及時編譯器編譯后的代碼等數據。方法區包含運行常量池,CLASS文件除了有類的版本、字段、方法、接口等描述信息外,還有一項信息是常量池,用于存放編譯期生成的各種字面量和符號引用,這部分內容將在類加載后進入方法區運行時常量池中存放。

總結

以上是生活随笔為你收集整理的java 常量区存放 new_java常量池与对象存储的全部內容,希望文章能夠幫你解決所遇到的問題。

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