簡體   English   中英

僅聲明類類型的變量時的內存分配

[英]Memory allocation when just declare a variable of a class type

在Java中,當我們只聲明一個類類型的變量時,只會創建一個引用(未為該對象分配內存)。 是將引用t保存在將在堆上創建空間的某個地方嗎? 或者如果我錯了,那么當我們只聲明變量時,究竟在內存中發生了什么?

Test t; 

在Java中,當我們只聲明一個類類型的變量時,只會創建一個引用(未為該對象分配內存)。

這是對的。

是否將引用t保留在將在堆上創建空間的某處?

答案取決於聲明出現的上下文。 如果所述聲明是對象的一部分(即t是一個字段 ),那么將從堆中分配用於引用的空間,以及包含該字段的對象其余部分的空間。 否則,將在JVM的堆棧框架中分配用於引用的空間。

聲明變量時:

Test t;

引用留有空間(固定數量,不取決於類中的成員數量)。 實例化變量時,請使用new關鍵字:

t = new Test();

然后在堆上留出該變量的空間,然后t引用該空間。 它必須足夠大以容納Test所有成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM