java存儲以及java對象創(chuàng)建的流程(詳解)
java存儲:
1)寄存器:這是最快的存儲區(qū),位于處理器的內(nèi)部。但是寄存器的數(shù)量有限,所以寄存器根據(jù)需求進行分配。我們不能直接進行操作。
2)堆棧:位于通用RAM中,可以通過堆棧指針從處理器那里獲取直接支持。堆棧指針往下移動,則分配新的內(nèi)存。網(wǎng)上移動,則釋放內(nèi)存。但是
在創(chuàng)建程序的時候必須知道存儲在堆棧中的所有項的具體生命周期,以便上下的移動指針。一般存儲基本類型和java對象引用。
3)堆:位于通用RAM中,存放所有的java對象,不需要知道具體的生命周期。
4)常量存儲:常量值通常直接存放在程序代碼內(nèi)部。
5)非RAM存儲:數(shù)據(jù)完全存活于程序之外,可以不受程序的控制,在程序沒有運行時也可以存在。就是將對象轉(zhuǎn)化為可以存放在其他媒介上的事物。如:流對象、持久化對象
對象創(chuàng)建的流程:
1):即使沒有顯示的調(diào)用static,構(gòu)造器實際上也是靜態(tài)方法。因此,當(dāng)首次創(chuàng)建對象的時候或者首次調(diào)用靜態(tài)方法/靜態(tài)域時,java解釋器必須查找類路徑,定位class文件。
2):載入class文件,有關(guān)靜態(tài)的方法或者變量都會執(zhí)行。因此,靜態(tài)初始化只會在類加載時被初始化一次。
3):使用new創(chuàng)建時,會先在堆上為對象分配足夠的存儲空間。
4):將這塊區(qū)域清零,這時,就自動的將對象中的基本成員變量或者引用進行默認(rèn)的初始化。數(shù)字為零,引用為null。
5):執(zhí)行所有出現(xiàn)于字段定義處的初始化動作。
6):執(zhí)行構(gòu)造器。
以上這篇java存儲以及java對象創(chuàng)建的流程(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于JDK8升級17及springboot?2.x升級3.x詳細(xì)指南
這篇文章主要介紹了關(guān)于JDK8升級17及springboot?2.x升級3.x的相關(guān)資料,還討論了JPA包路徑從javax改為jakarta,以及Spring?Boot版本升級和Redis配置調(diào)整等,需要的朋友可以參考下2025-01-01
Spring Mybatis Mapper模糊查詢的幾種方法
在Spring結(jié)合Mybatis進行開發(fā)時,實現(xiàn)模糊查詢是一個常見需求,在Mybatis中,LIKE查詢可以通過多種方式實現(xiàn),本文給大家介紹了Spring Mybatis Mapper模糊查詢的幾種方法,需要的朋友可以參考下2024-03-03
Java設(shè)計模式之代理模式_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Java設(shè)計模式之代理模式,本文詳細(xì)的介紹了什么事代理模式和相關(guān)的類和接口,有興趣的可以了解一下2017-08-08
解析ConcurrentHashMap: put方法源碼分析
ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧2021-06-06
MyBatis中獲取Mysql數(shù)據(jù)庫插入記錄的主鍵值的實現(xiàn)
本文主要介紹了MyBatis中獲取Mysql數(shù)據(jù)庫插入記錄的主鍵值的實現(xiàn),包含了三種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06

