一、内存管理概述
C#使用托管环境(由.NET运行时提供),实现了自动化的内存管理。这种内存管理机制主要包括两个核心部分:内存分配和垃圾回收。
二、内存分配
-
栈内存分配:对于值类型变量(如int、struct实例等)和引用类型变量(如class实例的引用)的局部变量,其内存通常在栈上分配。栈内存分配速度快,释放简单,当方法执行完毕或局部变量超出其作用域时,栈内存会自动回收。
void ExampleMethod() { int localInt = 42; // 值类型变量在栈上分配 MyClass localClass = new MyClass(); // 引用类型变量的引用在栈上分配 } // 方法结束时,栈内存自动回收
-
堆内存分配:对于new关键字创建的引用类型实例,其内存是在堆上分配的。堆内存分配相对复杂,但容量大,适合存储大对象和生存期不确定的对象。
MyClass instance = new MyClass(); // 引用类型实例在堆上分配