共用方式為


記憶體回收 (C# 與 Java 的比較)

更新:2007 年 11 月

在 C 和 C++ 中,物件一旦宣告後,許多物件便會要求程式設計人員先配置它們的資源,然後才能安全地使用這些物件。程式設計人員同時必須負責在物件使用完畢之後,立即將這些資源釋回到可用記憶體集區。如果沒有釋出資源,程式碼會因為使用愈來愈多不必要的資源而被告知遺漏記憶體。另一方面,如果提前釋出資源,就會發生資料喪失、其他記憶體區損毀和 Null 指標等例外狀況。

Java 和 C# 都會藉由應用程式來獨立管理所有使用中物件的存留期 (Lifetime),以免發生這些危險。

在 Java 中,JVM 會追蹤已配置資源的參考,並且據此負責釋出未使用的記憶體。只要 JVM 偵測出某項資源已不再提供有效的參考,資源便會立刻被記憶體回收。

在 C# 中,是由 Common Language Runtime (CLR) 負責處理記憶體回收,它的功能與 JVM 類似。CLR 記憶體回收行程會定期檢查記憶體堆積中是否有未參考的物件,然後釋放這些物件所佔用的資源。

請參閱

概念

C# 程式設計手冊

自動記憶體管理

其他資源

Java 開發人員可用的 C# 程式碼範例