C# 參考型別和實值型別

來源:互聯網
上載者:User

標籤:垃圾   frame   記憶體位址   浮點數   記憶體佔用   clr   類型   資料   int   

1、參考型別

FCL(Framework)中的大多數類型都是參考型別,參考型別總是在託管堆中分配的,C#的new操作符會返回對象的記憶體位址,也就是指對象資料的記憶體位址。在使用參考型別時,存在以下效能問題,這是我們在開發中必須要注意的:

a、記憶體必須從託管堆上分配(也就是說每new一個對象,會佔用記憶體,對象過多就會導致記憶體佔用)

b、 堆上分配的每個對象都有一些額外的成員,這些成員必須初始化

c、對象中的其他位元組(為欄位而設),總是設為0

d、從託管堆中每分配一個對象,可能強制執行一次記憶體回收操作

所以當我們的應用程式中都是參考型別時,應用程式的效能會顯著下降。

 

2、實值型別

上面介紹了參考型別,知道了當從託管堆中每分配一個對象時,都會造成應用程式效能的下降。設想當使用Int32類型初始化一個數字6或者使用float初始化一個浮點數6.6的時候,都進行一次記憶體的分配,那麼應用程式的效能會受到嚴重的影響.為了提供應用程式的效能,CLR提供了名為"實值型別"的輕量級類型.

C# 參考型別和實值型別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.