СТЕК это область памяти, с размером 1мб, где хранятся
- Адреса возврата из процедур ,
- Поля(Field) Структур (исключениям ссылочных типов , стеке хранится только ссылка на объект на кучу )
- Локальные переменные (Это параметры методов и объявленные переменные внутри метода )
- Ссылки на объекты на кучу .
КУЧА это область памяти где хранятся
- Объекты классов и структур
- Экземпляры классов
Чем отличаются объект и экземпляр. Объект внутри себя садержает статические члены (это статические поля(Field) и методы) и не статические методы классов и структур . Экземпляр садержает в себе только не статические поля(Field) (Поля(Field) это переменные ,объявленные внутри класса) и не смотря на то, что поле(Field) представляет собой значимий тип , все равно его значение будет хранится в куче . При первом создании объекта класса , на куче создаются экземпляры класса и объекты класса , а при создании объекта того же класса, во второй раз в кучу создаются только экземпляры класса. Это сделано для того, чтобы не занимать много места в памяти , а экземпляры связываються с объектом с помощью хеш кодами.