【发布时间】:2011-04-13 13:07:58
【问题描述】:
我不太熟悉垃圾收集的工作原理以及导致内存泄漏的原因。但我的观点是我开始关注它并想要编写更高效的代码。因此,我正在处理的项目是一个 Asp.Net Web 应用程序,当 Session 在 global.asax 中启动时创建一个自定义 DataCriteria 的实例,然后将其存储在 Session 变量中。这个自定义的 DataCriteria 是我们用来与数据库通信的 CRUD 方法。
第一个问题是,假设我们有一个 Person 类,在这个 Person 类中有一个 DataCriteria 字段,该字段设置为 DataCriteria 的 Session 变量实例。由于 Person 的实例持有对 DataCriteria 实例的引用,该实例在 Session 结束之前不会被处理,因此该 Person 的实例是否能够被收集。或者在 Session 结束之前不会处理 Person 的每个实例。
第二个问题更笼统,但问题相同。基本上我想知道在引用 DataCriteria 的 Session 变量实例的方法中声明的变量是否能够被 GC 收集?还是会一直持续到 Session 结束?
感谢您在这里给我的所有建议。如果您知道任何有助于理解垃圾收集和避免内存泄漏的好读物,我也很想听听。
【问题讨论】:
标签: c# memory-management garbage-collection