溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中怎么給對象創(chuàng)建內(nèi)存

發(fā)布時間:2021-08-03 10:44:54 來源:億速云 閱讀:86 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Java中怎么給對象創(chuàng)建內(nèi)存,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

Java對象創(chuàng)建內(nèi)存圖解析

1. 棧

  • Java棧的區(qū)域很小 , 特點是存取的速度特別快,棧存儲的特點是, 先進(jìn)后出,存儲速度快的原因:     棧內(nèi)存, 通過 棧指針'來創(chuàng)建空間與釋放空間,指針向下移動, 會創(chuàng)建新的內(nèi)存, 向上移動, 會釋放這些內(nèi)存。這種方式速度特別快 , 僅次于PC寄存器,但是這種移動的方式, 必須要明確移動的大小與范圍 ,明確大小與范圍是為了方便指針的移動 , 這是一個對于數(shù)據(jù)存儲的限制, 存儲的數(shù)據(jù)大小是固定的 , 影響了程序的靈活性。     所以我們把更大部分的數(shù)據(jù) 存儲到了堆內(nèi)存中存儲的是:基本數(shù)據(jù)類型的數(shù)據(jù) 以及 引用數(shù)據(jù)類型的引用。

例如:
int a =10;
Person p = new Person();
10存儲在棧內(nèi)存中 , 第二句代碼創(chuàng)建的對象的引用§存在棧內(nèi)存中

2. 堆

  • 堆存放的是類的對象 ,Java是一個純面向?qū)ο笳Z言, 限制了對象的創(chuàng)建方式:所有類的對象都是通過new關(guān)鍵字創(chuàng)建new關(guān)鍵字, 是指告訴JVM, 需要明確的去創(chuàng)建一個新的對象 , 去開辟一塊新的堆內(nèi)存空間,堆內(nèi)存與棧內(nèi)存不同, 優(yōu)點在于我們創(chuàng)建對象時 , 不必關(guān)注堆內(nèi)存中需要開辟多少存儲空間 , 也不需要關(guān)注內(nèi)存占用時長,堆內(nèi)存中內(nèi)存的釋放是由GC(垃圾回收器)完成的垃圾回收器 回收堆內(nèi)存的規(guī)則:當(dāng)棧內(nèi)存中不存在此對象的引用時,則視其為垃圾 , 等待垃圾回收器回收 。

3. 方法區(qū)

方法區(qū)存放的是:

  • 類信息

  • 靜態(tài)的變量

  • 常量

  • 成員方法
    方法區(qū)中包含了一個特殊的區(qū)域 ( 常量池 )(存儲的是使用static修飾的成員)

創(chuàng)建內(nèi)存棧、堆、方法區(qū)圖析

舉個例子如下圖:

Java中怎么給對象創(chuàng)建內(nèi)存

對象的引用存放在棧中,new創(chuàng)建Book()對象在堆內(nèi)存中開辟了一段內(nèi)存,內(nèi)存都是有地址的假設(shè)為0x123,棧內(nèi)存中存儲了地址,地址指向堆內(nèi)存,獲取了對象Book的屬性name、info,并賦值為"計算機(jī)",“計算機(jī)書籍”,如圖示:

Java中怎么給對象創(chuàng)建內(nèi)存

接著BOOK book2 = book1,在棧內(nèi)存中又創(chuàng)建了一個區(qū)域,這個區(qū)域就是book2,也拿到book1的地址,通過book2調(diào)用將name改為"Java",接著在調(diào)用方放say()。整個過程如圖示:

Java中怎么給對象創(chuàng)建內(nèi)存

結(jié)果如下:

Java中怎么給對象創(chuàng)建內(nèi)存

  • 方法結(jié)束整個過程完成后,變量對象使用完畢,因為它的作用域就這么大,將會被釋放,book2,book1先后出棧釋放,緊接著堆內(nèi)存的對象沒有任何棧內(nèi)存指向它,最后交給交給GC垃圾回收期處理。

這就是Java對象創(chuàng)建內(nèi)存到釋放內(nèi)存的一個過程。

關(guān)于Java中怎么給對象創(chuàng)建內(nèi)存就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI