国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了java對(duì)象的創(chuàng)建過程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.類的加載與檢查

當(dāng)我們new了一個(gè)對(duì)象的時(shí)候,首先會(huì)去檢查一下這個(gè)指令是否在常量池中存在符號(hào)引用,并且檢查這個(gè)符號(hào)引用代表的對(duì)象是否被加載,解析初始化過,如果沒有就要先去進(jìn)行類加載過程

二.分配內(nèi)存

我們通過第一步的檢查后,就會(huì)在堆中劃分出一塊對(duì)象所需要的內(nèi)存大小,至于分配方式有兩種,指針碰撞,空閑列表。選擇哪種分配方式由 Java 堆是否規(guī)整決定,而 Java 堆是否規(guī)整又由所采用的垃圾收集器是否帶有壓縮整理功能決定。

指針碰撞

適用于沒有內(nèi)存碎片的情況,原理:用過的內(nèi)存全部整合到一邊,沒有用過的內(nèi)存放在另一邊,中間有一個(gè)分界指針,只需要向著沒用過的內(nèi)存方向?qū)⒃撝羔樢苿?dòng)對(duì)象內(nèi)存大小位置即可。
使用該分配方式的 GC 收集器:Serial, ParNew

空閑列表

適用于堆內(nèi)存不是很規(guī)則的情況下,原理就是找一塊合適的內(nèi)存來分配給對(duì)象,使用該分配方式的GC收集器 CMS

JAVA內(nèi)存是否規(guī)則取決于垃圾回收器采用的是標(biāo)記-整理法還是標(biāo)記清除法

三.初始化

內(nèi)存分配完成后,虛擬機(jī)需要將分配到的內(nèi)存空間都初始化為零值(不包括對(duì)象頭),這一步操作保證了對(duì)象的實(shí)例字段在 Java 代碼中可以不賦初始值就直接使用,程序能訪問到這些字段的數(shù)據(jù)類型所對(duì)應(yīng)的零值。

四.設(shè)置對(duì)象頭

初始化零值完成之后,虛擬機(jī)要對(duì)對(duì)象進(jìn)行必要的設(shè)置,例如這個(gè)對(duì)象是哪個(gè)類的實(shí)例、如何才能找到類的元數(shù)據(jù)信息、對(duì)象的哈希碼、對(duì)象的 GC 分代年齡等信息。 這些信息存放在對(duì)象頭中。 另外,根據(jù)虛擬機(jī)當(dāng)前運(yùn)行狀態(tài)的不同,如是否啟用偏向鎖等,對(duì)象頭會(huì)有不同的設(shè)置方式。
?

五.執(zhí)行init方法

在上面工作都完成之后,從虛擬機(jī)的視角來看,一個(gè)新的對(duì)象已經(jīng)產(chǎn)生了,但從 Java 程序的視角來看,對(duì)象創(chuàng)建才剛開始,<init> 方法還沒有執(zhí)行,所有的字段都還為零。所以一般來說,執(zhí)行 new 指令之后會(huì)接著執(zhí)行 <init> 方法,把對(duì)象按照程序員的意愿進(jìn)行初始化,這樣一個(gè)真正可用的對(duì)象才算完全產(chǎn)生出來。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-738018.html

到了這里,關(guān)于java對(duì)象的創(chuàng)建過程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java語(yǔ)言面向?qū)ο蟆浚?)面向過程編程

    【Java語(yǔ)言面向?qū)ο蟆浚?)面向過程編程

    人機(jī)猜拳的第一版(下方是程序源碼) 人機(jī)猜拳(面向過程版本) 三部分組成 初始化 游戲開始 游戲數(shù)據(jù)統(tǒng)計(jì) 逐步完成,并階段測(cè)試。 面向過程整體的思路:做一件事,分為多個(gè)步驟,每個(gè)步驟之間是有序的,最后按序完成。 面向過程的優(yōu)缺點(diǎn): 優(yōu)點(diǎn):符合人類思維,簡(jiǎn)

    2023年04月09日
    瀏覽(28)
  • c、c++、java、python、js對(duì)比【面向?qū)ο蟆⑦^程;解釋、編譯語(yǔ)言;封裝、繼承、多態(tài)】

    c、c++、java、python、js對(duì)比【面向?qū)ο?、過程;解釋、編譯語(yǔ)言;封裝、繼承、多態(tài)】

    目錄 內(nèi)存管理、適用 區(qū)別 C 手動(dòng)內(nèi)存管理:C語(yǔ)言沒有內(nèi)置的安全檢查機(jī)制,容易出現(xiàn)內(nèi)存泄漏、緩沖區(qū)溢出等安全問題。 適用于系統(tǒng)級(jí)編程 C++ 手動(dòng)內(nèi)存管理:C++需要程序員手動(dòng)管理內(nèi)存,包括分配和釋放內(nèi)存,這可能導(dǎo)致內(nèi)存泄漏和指針錯(cuò)誤。 適用于游戲引擎和系統(tǒng)級(jí)編

    2024年02月08日
    瀏覽(51)
  • Java進(jìn)階(4)——結(jié)合類加載JVM的過程理解創(chuàng)建對(duì)象的幾種方式:new,反射Class,克隆clone(拷貝),序列化反序列化

    Java進(jìn)階(4)——結(jié)合類加載JVM的過程理解創(chuàng)建對(duì)象的幾種方式:new,反射Class,克隆clone(拷貝),序列化反序列化

    1.類什么時(shí)候被加載到JVM中,new,Class.forName: Class.forName(“包名.類名”); 2.創(chuàng)建對(duì)象的方式,反射,本質(zhì)是獲得類的類對(duì)象Class; 3.克隆clone,深拷貝,淺拷貝的對(duì)比; 4.序列化和反序列化的方式; Hello h; // 此時(shí)沒有用Hello,jvm并沒有進(jìn)行類加載 看到new : new Book() Class.forName:

    2024年02月12日
    瀏覽(30)
  • JVM中對(duì)象創(chuàng)建過程

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

    在JVM中對(duì)象的創(chuàng)建,我們從一個(gè)new指令開始: 這個(gè)過程大概圖示如下: 虛擬機(jī)收到new指令觸發(fā)。 類加載檢查:如果類沒有被類加載器加載,則執(zhí)行類加載流程(將class信息加載到JVM的運(yùn)行時(shí)數(shù)據(jù)區(qū)的過程),對(duì)象所需內(nèi)存大小在類加載完后可以完全確定。 對(duì)象分配內(nèi)存:從

    2024年03月22日
    瀏覽(28)
  • k8s創(chuàng)建資源對(duì)象過程

    k8s創(chuàng)建資源對(duì)象過程

    我們都知道,K8S中一切皆資源,在使用K8S時(shí),所有的pod或者controller都是通過yaml文件進(jìn)行創(chuàng)建的。 那么接下來,就和大家一起看一下K8S是如何創(chuàng)建資源的。 Deployment是一種常見的資源對(duì)象。在Kubernetes系統(tǒng)中創(chuàng)建資源對(duì)象有很多種方法。本節(jié)將對(duì)用kubectl create命令創(chuàng)建Deployment資

    2024年01月19日
    瀏覽(17)
  • Kubernetes詳解(十五)——Pod對(duì)象創(chuàng)建過程

    Kubernetes詳解(十五)——Pod對(duì)象創(chuàng)建過程

    今天繼續(xù)給大家介紹Linux運(yùn)維相關(guān)知識(shí),本文主要內(nèi)容是Pod對(duì)象創(chuàng)建過程。 Pod對(duì)象是Kubernetes集群的基礎(chǔ)對(duì)象,其創(chuàng)建過程如下所示: 從上圖中可以看出,Pod的創(chuàng)建過程主要有以下步驟: 1、用戶通過kubele或者其他API客戶端提交Pod創(chuàng)建指令。 2、API將Pod對(duì)象的相關(guān)信息存入ETC

    2024年02月05日
    瀏覽(24)
  • JVM運(yùn)行時(shí)區(qū)域——對(duì)象創(chuàng)建內(nèi)存分配過程

    JVM運(yùn)行時(shí)區(qū)域——對(duì)象創(chuàng)建內(nèi)存分配過程

    ????????新創(chuàng)建的對(duì)象 , 都存放在伊甸園區(qū)域 ,當(dāng)垃圾回收時(shí),將伊甸園區(qū)域的垃圾數(shù)據(jù)銷毀,然后將存活的對(duì)象轉(zhuǎn)移到幸存者0區(qū)域,之后創(chuàng)建的新的對(duì)象還是存放在伊甸園區(qū)域,等到再次垃圾回收后,將伊甸園區(qū)域和幸存者0區(qū)域中存活的對(duì)象一起轉(zhuǎn)移到幸存者1區(qū)域中

    2024年02月15日
    瀏覽(22)
  • 【Mybatis源碼】XMLConfigBuilder構(gòu)建器 - 加載XML與創(chuàng)建Configuration對(duì)象的過程

    XMLConfigBuilder是Mybatis中定義的進(jìn)行構(gòu)建Configuration對(duì)象的類,此類用于讀取XML配置文件創(chuàng)建并初始化Configuration對(duì)象;本篇我們主要介紹加載XML文件與創(chuàng)建Configuration對(duì)象的過程。 下面是從Configuration類中取到的代碼片段:

    2024年02月08日
    瀏覽(24)
  • JVM面試題-JVM對(duì)象的創(chuàng)建過程、內(nèi)存分配、內(nèi)存布局、訪問定位等問題詳解

    JVM面試題-JVM對(duì)象的創(chuàng)建過程、內(nèi)存分配、內(nèi)存布局、訪問定位等問題詳解

    內(nèi)存分配的兩種方式 指針碰撞 適用場(chǎng)合:堆內(nèi)存 規(guī)整 (即沒有內(nèi)存碎片)的情況下。 原理:用過的內(nèi)存全部整合到一邊,沒有用過的內(nèi)存放在另一邊,中間有一個(gè)分界指針,只需要向著沒用過的內(nèi)存方向?qū)⒃撝羔樢苿?dòng)對(duì)象內(nèi)存大小位置即可。 使用該分配方式的GC收集器:

    2024年02月08日
    瀏覽(21)
  • [排錯(cuò)過程]AD域 事件ID1988/站點(diǎn)間復(fù)制報(bào)錯(cuò)/沒有給定足夠的屬性以創(chuàng)建對(duì)象【已解決】

    [排錯(cuò)過程]AD域 事件ID1988/站點(diǎn)間復(fù)制報(bào)錯(cuò)/沒有給定足夠的屬性以創(chuàng)建對(duì)象【已解決】

    額外域服務(wù)器系統(tǒng)時(shí)間與主域之間時(shí)間不同步,導(dǎo)致超過入站復(fù)制時(shí)間,主域認(rèn)為額外域已不存在,導(dǎo)致主域出現(xiàn)復(fù)制延遲對(duì)象。 “沒有給定足夠的屬性以創(chuàng)建對(duì)象,這個(gè)對(duì)象可能不存在因?yàn)樗赡芤呀?jīng)刪除域垃圾收集” repadmin /showrepl 顯示如下: 站點(diǎn)間復(fù)制報(bào)錯(cuò)如下: 在

    2024年01月21日
    瀏覽(76)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包