[英].net Garbage Collection and managed resources
來自原始數據類型(int,char等)的內存是在它們離開作用域后立即釋放,還是添加到垃圾收集中以供以后發布?
考慮:
For x as integer=0 to 1000
dim y as integer
Next
如果這不會將垃圾收集器中的1000個整數添加到以后清理,它如何處理字符串對象? 這會創建1000個字符串以便以后清理嗎?
For x as integer=0 to 1000
dim y as string=""
Next
如何只包含int,string等...數據類型的結構?
僅包含托管資源的類?
好的,只有兩個答案,已經有錯誤信息...
有關更多信息,請參閱我的文章, 了解.NET內存中的內容 。 您可能還想考慮它是否重要 。
原始數據類型(字符串除外)是值類型,在堆棧而不是堆上創建。 當它們超出范圍時,它們會從堆棧中彈出; 他們不是垃圾收集。
字符串是引用類型,在堆上分配,並且是垃圾回收。 .NET使用String Interning對字符串的內存管理進行一些優化。 (即你在內存中可能只有一個字符串“”的實例..NET可以這樣做,因為字符串是不可變的)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.