黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > new 一個(gè)對(duì)象的過程和clone 一個(gè)對(duì)象的過程?

new 一個(gè)對(duì)象的過程和clone 一個(gè)對(duì)象的過程?

來源:千鋒教育
發(fā)布人:qyf
時(shí)間: 2022-06-07 16:18:00 1654589880

  對(duì)象的創(chuàng)建過程

  1、類加載

  當(dāng)虛擬機(jī)遇到一個(gè) new 指令的時(shí)候,會(huì)先去檢測(cè)這個(gè)指令的參數(shù)是否能定位到這個(gè)類的符號(hào)引用,并檢查這個(gè)類是否被加載、解析、初始化過(在 JVM 的方法區(qū)中檢查)。如果沒有,則執(zhí)行類加載(類加載機(jī)制)

  2、內(nèi)存分配

  在類加載通過之后,虛擬機(jī)將為新生對(duì)象分配內(nèi)存,對(duì)象所需內(nèi)存的大小在類加載完成后便可完全確定,相當(dāng)于從 Java 堆中抽取一塊內(nèi)存出來;而根據(jù)內(nèi)存的是否絕對(duì)規(guī)整,分為指針碰撞和空閑列表兩種分配方式:

  指針碰撞:假設(shè) Java 堆中的內(nèi)存是絕對(duì)規(guī)整的,分為空閑和非空閑兩種,中間用一個(gè)指針當(dāng)做劃分界限的指示器;當(dāng)一個(gè)新對(duì)象需要分配對(duì)象時(shí),相當(dāng)于把指針向空閑區(qū)域移動(dòng)一段與對(duì)象大小相等的距離。

  空閑列表:假設(shè) Java 堆的內(nèi)存不是絕對(duì)規(guī)整的,空閑和非空閑是相互交錯(cuò)的,那就需要一個(gè) OopMap 列表,用來記錄哪些內(nèi)存塊是可以用的,在對(duì)象分配內(nèi)存時(shí),劃分一塊大小相等的區(qū)域給對(duì)象,并更新這個(gè)列表

  從上面的解釋看,用哪種分配方式,是通過 Java 堆的內(nèi)存塊是否絕對(duì)規(guī)整決定的。

  堆內(nèi)存是否規(guī)整,主要是看 GC 回收了內(nèi)存之后是否包含壓縮或者整理功能.如果有,那么內(nèi)存就比較規(guī)整.否則如果沒有,創(chuàng)建對(duì)象就需要采用空閑列表的方式.

  比如:serial,ParNew 等帶有整理的收集器,可以使用指針碰撞.CMS 使用簡單清除的算法,可以使用空閑列表.

  但對(duì)象的創(chuàng)建是頻繁的,在并發(fā)的情況,多線程不一定是安全的,即存在 A 對(duì)象在分配內(nèi)存,指針還未來得及修改,B 對(duì)象也同時(shí)使用了原來的指針來分配對(duì)象。所以又衍生了兩種解決辦法,CAS+失敗重試 和 TLAB 兩種方式

  CAS+失敗重試:虛擬機(jī)采用 CAS 配上失敗重試的方式保證更新操作的原子性 (關(guān)于 CAS 鎖,是樂觀鎖的一種實(shí)現(xiàn),解釋起來也比較麻煩,

  TLAB:本地線程分配緩沖,把內(nèi)存分配的動(dòng)作按照線程分配劃分在不同的空間中進(jìn)行,即每個(gè)線程在 Java 堆中預(yù)先分配一小塊內(nèi)存,哪個(gè)線程需要需要分配,先在 TLAB 中分配,用完了并重新分配新的 TLAB 時(shí),才需要同步鎖定。

  3、初始值為零

  在內(nèi)存分配完成之后,虛擬機(jī)需要將分配到的內(nèi)存空間初始化為零值 (除對(duì)象頭外),這一步操作也保證了對(duì)象的實(shí)例字段在 java 代碼中可以不賦初始值就可以使用,因?yàn)槌绦蚰茉L問這些字段的數(shù)據(jù)類型所對(duì)應(yīng)的零值。

  4、設(shè)置對(duì)象頭

  初始值設(shè)置之后,怎么知道對(duì)象是哪個(gè)類的實(shí)例,如何才能找到類的元數(shù)據(jù)信息、哈希碼、GC 分代年齡等信息呢?這就需要對(duì)對(duì)象頭進(jìn)行一些必要的設(shè)置,才能定位到。

  5、入棧、執(zhí)行 init 指令

  從虛擬機(jī)來看,對(duì)象已經(jīng)分配產(chǎn)生完成了,且入棧了;但 Java 程序來看,這才剛開始,所以,new 之后,則執(zhí)行 init 方法,進(jìn)行初始化。

  6、Java 對(duì)象的內(nèi)存分布(即實(shí)例化后的對(duì)象在堆中的分布)

  對(duì)象在內(nèi)存中的存儲(chǔ)布局可分為 3 部分:

圖片 2

  對(duì)象頭

  其中對(duì)象頭又可以細(xì)分為兩部分:

  1、存儲(chǔ)對(duì)象自身運(yùn)行時(shí)數(shù)據(jù):如哈希碼、GC 分代年齡、鎖狀態(tài)標(biāo)志、線程持有的、偏向線程 ID 等信息

  2、類型指針:即對(duì)象指向它的類元數(shù)據(jù)的指針,虛擬機(jī)通過這個(gè)來確定這個(gè)對(duì)象是哪個(gè)類的實(shí)例(比如是指向棧中的類聲明)

  實(shí)例數(shù)據(jù)

  是對(duì)象真正存儲(chǔ)的有效信息,比如程序中定義的各種類型的字段內(nèi)容,無論父類和子類都會(huì)記錄下來;在分配時(shí),相同寬度的字段會(huì)被分配到一起,這也是父類定義的變量會(huì)出現(xiàn)在子類之前的原因。

  對(duì)齊填充

  沒啥實(shí)際意義,就是為了保證對(duì)象是 8 個(gè)字節(jié)的整數(shù)倍,沒對(duì)齊時(shí),用來補(bǔ)全而已。

  7、對(duì)象的訪問定位

  使用對(duì)象時(shí),通過棧上的 reference 數(shù)據(jù)來操作堆上的具體對(duì)象。

  建立對(duì)象是為了使用對(duì)象,Java 程序需要通過棧上的 reference 數(shù)據(jù)來操作堆上的具體對(duì)象;但這些訪問方式取決于虛擬機(jī)實(shí)現(xiàn)而定,目前主流有句柄和直接指針兩種:

  句柄:從 Java 堆中劃分出一塊內(nèi)存用來作為句柄池,reference 中存儲(chǔ)的就是對(duì)象的句柄地址,而句柄包含了對(duì)象實(shí)例數(shù)據(jù)與類型數(shù)據(jù)各自的具體地址信息,如下圖(圖片來自 Java 虛擬機(jī)第三版)

圖片 3

  直接指針:在直接指針中,reference 儲(chǔ)存的就是對(duì)象地址,所以,需要考慮的是如何防止訪問類型數(shù)據(jù)的相關(guān)信息(圖片來自 Java 虛擬機(jī)第三版)

圖片 4

  優(yōu)點(diǎn)介紹:

  句柄:使用句柄好處是,reference 中存放的是文檔的句柄地址,對(duì)象被移動(dòng)時(shí),只改變句柄的實(shí)例數(shù)據(jù)指針,而 reference 本身不需要修改

  直接指針:使用直接指針的最大好處就是速度更快,節(jié)省了指針定位的開銷;

  HotSpot 使用第二種方式進(jìn)行對(duì)象訪問的.

  三、對(duì)象的具體實(shí)例化過程

  1、 在堆內(nèi)存中開辟一塊空間

  2、 開辟空間分配一個(gè)地址(指針碰撞或者空閑列表兩種分配方式)

  3、把對(duì)象的所有非靜態(tài)成員加載到所開辟的空間下(從方法區(qū)的非靜態(tài)區(qū)域中加載,類加載的時(shí)候.class 文件的非靜態(tài)內(nèi)容就是加載到這里的)

  4、 所有的非靜態(tài)成員加載完成之后,對(duì)所有非靜態(tài)成員變量進(jìn)行默認(rèn)初始化

  5、 所有非靜態(tài)成員變量默認(rèn)初始化完成之后,調(diào)用構(gòu)造函數(shù)

  6、 在構(gòu)造函數(shù)入棧執(zhí)行時(shí),分為兩部分:先執(zhí)行構(gòu)造函數(shù)中的隱式三步,再執(zhí)行構(gòu)造函數(shù)中書寫的代碼:.1、隱式三步:1、執(zhí)行 super 語句,2、對(duì)開辟空間下的所有非靜態(tài)成員變量進(jìn)行顯式初始化3、執(zhí)行構(gòu)造代碼塊(注:代碼塊與非靜態(tài)成員變量顯示初始化無先后順序,與代碼順序相關(guān),如代碼塊在上,則先加載代碼塊),4、在隱式三步執(zhí)行完之后,執(zhí)行構(gòu)造函數(shù)中書寫的代碼

  7、在整個(gè)構(gòu)造函數(shù)執(zhí)行完并彈棧后,把空間分配的地址賦值給一個(gè)引用對(duì)象(對(duì)象的訪問定位有句柄和直接指針兩種方式)

  至此,Java 堆中有一塊內(nèi)存新的內(nèi)存 存儲(chǔ)這個(gè)實(shí)例化的對(duì)象,對(duì)象里面包含了對(duì)象頭、實(shí)例數(shù)據(jù)以及對(duì)齊填充。其中對(duì)象頭又可以細(xì)分為兩部分:

  1、存儲(chǔ)對(duì)象自身運(yùn)行時(shí)數(shù)據(jù):如哈希碼、GC 分代年齡、鎖狀態(tài)標(biāo)志、線程持有的、偏向線程 ID 等信息

  2、類型指針:即對(duì)象指向它的類元數(shù)據(jù)的指針,虛擬機(jī)通過這個(gè)來確定這個(gè)對(duì)象是哪個(gè)類的實(shí)例(比如是指向棧中的類聲明)

  實(shí)例數(shù)據(jù)是對(duì)象真正存儲(chǔ)的有效信息。對(duì)齊填充沒什么大用處。

  更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的好程序員班,高品質(zhì)課程助理你實(shí)現(xiàn)java程序員夢(mèng)想。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
抖音小店怎么做代銷

抖音已經(jīng)成為了一個(gè)非常受歡迎的短視頻應(yīng)用程序,在其中許多用戶都精心打造了自己的小店,用于銷售各種各樣的商品,獲取額外的收入。然而,要想...詳情>>

2023-10-08 15:28:41
怎樣開抖音小店帶貨賺錢

隨著直播帶貨的火熱,越來越多的人開始嘗試通過抖音小店來開展帶貨業(yè)務(wù)。抖音小店是抖音直播帶貨的配套,可以讓用戶在購買直播中產(chǎn)品時(shí)就實(shí)現(xiàn)購...詳情>>

2023-10-08 15:06:36
能不能幫我打開抖音小店店鋪呢怎么弄

抖音小店是近年來非常火爆的一個(gè)網(wǎng)絡(luò)業(yè)務(wù),也是提供了很多商業(yè)機(jī)會(huì)的平臺(tái)。對(duì)于一個(gè)創(chuàng)業(yè)者而言,開設(shè)抖音小店是一個(gè)不錯(cuò)的選擇。但是,許多小店...詳情>>

2023-10-08 15:01:21
藍(lán)v抖音小店怎么開通店鋪

藍(lán)v抖音小店是一個(gè)非常熱門的電商平臺(tái),它可以讓賣家在抖音上開設(shè)自己的店鋪,從而出售自己的商品。隨著抖音的不斷發(fā)展壯大,越來越多的賣家希...詳情>>

2023-10-08 14:51:53
抖音小店怎么更改類目名稱

抖音小店是現(xiàn)在非常火熱的一種網(wǎng)店形態(tài),許多小生意也從中獲得了收益。但是隨著經(jīng)營時(shí)間的增長,小店也需要對(duì)自己的類目名稱進(jìn)行更改,因?yàn)檫@可...詳情>>

2023-10-08 14:46:50
亚欧视频在线| 精品视频免费观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美激情中文字幕一区二区| 国产成人啪精品视频免费软件| 日本在线不卡视频| 精品久久久久久免费影院| 国产91素人搭讪系列天堂| 可以免费看毛片的网站| 精品视频免费看| 可以免费在线看黄的网站| 欧美日本二区| 美女免费黄网站| 久草免费在线观看| 日本免费看视频| 成人高清免费| 国产不卡精品一区二区三区| 国产高清在线精品一区二区 | 国产一区二区精品久久91| 日韩在线观看免费| 精品国产一区二区三区免费| 日本乱中文字幕系列| 国产精品自拍在线| 成人影院一区二区三区| 久久精品欧美一区二区| 精品国产三级a∨在线观看| 美国一区二区三区| 中文字幕97| 国产一区免费观看| 国产亚洲男人的天堂在线观看| 日韩中文字幕在线亚洲一区| 精品久久久久久综合网| 国产网站在线| 99久久网站| 久久国产一区二区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一级毛片看真人在线视频| 日韩在线观看免费完整版视频| 精品久久久久久综合网| 一级女性全黄久久生活片| 999精品视频在线| 精品国产三级a| 久久国产影视免费精品| 精品国产香蕉伊思人在线又爽又黄| 欧美电影免费看大全| 久久99中文字幕| 你懂的日韩| 九九久久99| 日本免费乱理伦片在线观看2018| 久久99爰这里有精品国产| 精品在线视频播放| 国产网站在线| a级毛片免费全部播放| 精品国产一区二区三区久| 精品毛片视频| 一级女人毛片人一女人| 91麻豆tv| 97视频免费在线| 成人在激情在线视频| 成人影院久久久久久影院| 国产成人精品综合在线| 你懂的福利视频| 成人免费网站久久久| 国产麻豆精品hdvideoss| 日本免费区| 国产福利免费视频| 欧美a级大片| 亚洲精品中文字幕久久久久久| 韩国三级香港三级日本三级la| 精品久久久久久免费影院| 黄视频网站在线观看| 国产不卡高清在线观看视频| 欧美另类videosbestsex高清| 免费一级片在线观看| 色综合久久天天综合观看| a级毛片免费观看网站| 欧美日本韩国| 国产a免费观看| 免费一级片在线观看| 国产成人精品综合在线| 亚洲爆爽| 国产一区二区精品在线观看| 日韩专区在线播放| 四虎影视库| 韩国三级香港三级日本三级la| 久久国产精品永久免费网站| 亚洲女人国产香蕉久久精品 | 欧美另类videosbestsex| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 久久成人亚洲| 欧美激情在线精品video| 成人免费一级毛片在线播放视频| 久久国产精品只做精品| 国产成人啪精品视频免费软件| 免费的黄视频| 日本特黄特黄aaaaa大片| 欧美日本二区| 国产成人啪精品视频免费软件| 青青久在线视频| 日本免费看视频| 日本免费区| a级毛片免费全部播放| 黄视频网站在线看| 青青久久精品| 欧美大片a一级毛片视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美激情一区二区三区视频 | 国产精品1024永久免费视频| 国产伦精品一区二区三区无广告| 可以免费看污视频的网站| 黄色免费网站在线| 精品视频免费看| 欧美a级片视频| 青青青草影院 | 成人a大片高清在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 韩国三级视频在线观看| 国产高清在线精品一区二区 | 色综合久久天天综合绕观看| 精品视频在线看 | 国产麻豆精品| 日韩中文字幕在线观看视频| 精品久久久久久中文字幕一区 | 国产一区二区精品| 欧美激情一区二区三区在线播放| 亚洲天堂免费观看| 国产欧美精品| 国产视频久久久久| 久久精品大片| 国产成人精品一区二区视频| 一a一级片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久久久久久免费视频| 日韩欧美一二三区| 美国一区二区三区| 超级乱淫黄漫画免费| 精品视频在线观看一区二区三区| 亚欧成人毛片一区二区三区四区| 精品视频在线观看视频免费视频| 麻豆系列国产剧在线观看| 成人a大片在线观看| 日韩中文字幕一区二区不卡| 精品国产三级a∨在线观看| 四虎影视库| 国产网站在线| 韩国三级视频在线观看| 亚洲精品久久玖玖玖玖| 色综合久久天天综线观看| 日日夜人人澡人人澡人人看免| 青青久在线视频| 国产一区二区精品| 欧美电影免费| 日韩字幕在线| 一本伊大人香蕉高清在线观看| 日本特黄特黄aaaaa大片| 国产精品自拍在线| 精品在线免费播放| 国产激情视频在线观看| 亚久久伊人精品青青草原2020| 毛片高清| 你懂的在线观看视频| 成人a级高清视频在线观看| 日韩中文字幕在线亚洲一区| 天堂网中文字幕| 国产伦精品一区三区视频| 麻豆系列 在线视频| 黄色短视频网站| 四虎论坛| 精品视频免费观看| 99色视频在线观看| 精品美女| 青青久在线视频| 国产91丝袜在线播放0| 欧美激情伊人| 久久久成人影院| 国产视频久久久| 亚久久伊人精品青青草原2020| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩中文字幕在线播放| 国产视频一区二区在线播放| 四虎影视久久久| 久久国产影院| 日本伦理片网站| 精品视频在线观看视频免费视频| 国产精品自拍在线观看| 91麻豆精品国产片在线观看| 精品国产一区二区三区精东影业| 中文字幕97| 精品国产亚洲人成在线| 精品视频在线看 | 日本特黄特色aaa大片免费| 国产伦精品一区二区三区无广告| 日本伦理黄色大片在线观看网站| 99久久精品国产高清一区二区| 成人a级高清视频在线观看| 天天做人人爱夜夜爽2020毛片| 99久久网站| 国产亚洲精品成人a在线| 久草免费在线视频| 欧美a级成人淫片免费看|