垃圾回收(C# 与 Java)

更新:2007 年 11 月

在 C 和 C++ 中,许多对象要求程序员在声明它们后为其分配资源,然后才可以安全地使用对象。使用完对象后将这些资源释放回自由内存池,也是程序员的责任。如果资源得不到释放,则认为代码泄漏内存,因为越来越多的资源会被不必要地消耗掉。另一方面,如果资源被过早释放,可能会发生数据丢失、其他内存区域损坏和 Null 指针异常。

Java 和 C# 都单独管理应用程序使用的所有对象的生存期,通过这种方法防范这些危险。

在 Java 中,JVM 通过跟踪对已分配资源的引用来释放不再使用的内存。只要 JVM 检测到不再由有效引用引用的资源,该资源就被作为垃圾回收。

在 C# 中,垃圾回收由与 JVM 的功能类似的公共语言运行时 (CLR) 处理。CLR 垃圾回收器定期检查内存堆中是否有任何未引用的对象,并释放这些对象占用的资源。

请参见

概念

C# 编程指南

自动内存管理

其他资源

C# 代码示例(针对 Java 开发人员)