簡體   English   中英

內存中對象的大小

[英]Size of objects in memory

如果我有一個具有100個都是int32的屬性的類,並且已經實例化了100個這些對象,那么即使在設置任何屬性之前還是執行某些操作(或全部)保留該空間,直到您第一次真正為前置操作分配值之前?

創建對象時,將立即分配所有字段的內存。 請注意,對象的大小還包括對象標頭,填充等。

實例化對象后立即使用內存,因為int是一種值類型。

引用類型的工作有點不同。 如果要使用屬性字符串而不是整數,則仍將使用〜40,000字節,但不能再使用更多字節,因為此時您的字符串都是空引用(空引用仍為引用保留空間)。 開始為字符串設置值時,您將開始使用空格。

像所有值類型一樣, Int32具有默認值。 (0)

是的 一旦創建了這些Int32變量,它們就會占用內存。

實例化后,所有類作用域字段都是“分配的”,這與局部作用域變量不同,后者可以無限期保持未分配狀態。 因此,值類型消耗它們的適當大小,而引用則消耗移動指針的大小,無論它們是什么(當它們在類級別作用域時)。

還要注意,除非布局是順序的(如在結構中)或顯式的,否則大多數值類型將被填充為至少32位。

預測空引用將消耗多少空間並不總是那么簡單,但是如果它們是普通指針,則在x86平台上將消耗4個字節,在x64平台上將消耗8個字節。

暫無
暫無

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

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