در CLR, دو دشته متغیر وجود دارن 1-متغیرهای عادی یا ذاتی 2-متغیرهای که به نوعی شیئ هستند. متغیرهای دسته اول که به اونها Value Types گفته میشه در پشته یا Stack نگهداشته میشن و متغیرهای دسته دوم در انبوه یا Heap.



البته متغیرهایی هم که در Heap نگه داشته میشن در اصل از Stack به اونها در Heap اشاره میشه.



CLR از دو نوع روش برای این دو نوع داده ها استفاده میکنه تا بتونه به حداکثر سرعت و بازدهی برسه در صورتی که در جاوا فقط Heap وجود داره. در عین حال متغیرهایی که در Stack هستن بعد از تمام شدن استفاده از اونها از بین می روند ولی متغیرهایی دسته دوم را پروسه ای به نام Garbage Collector از بین میبره.