小编gma*_*mac的帖子

.NET垃圾收集行为(使用DataTable obj)

我想知道为什么在创建一个非常简单的DataTable然后将其设置为null后,垃圾收集不会清除该DataTable使用的所有内存.这是一个例子.变量Before应该等于Removed但它不是.

{
 long Before = 0, After = 0, Removed = 0, Collected = 0;

 Before = GC.GetTotalMemory(true);
 DataTable dt = GetSomeDataTableFromSql();
 After = GC.GetTotalMemory(true);
 dt = null;
 Removed = GC.GetTotalMemory(true);
 GC.Collect();
 Collected = GC.GetTotalMemory(true);
}
Run Code Online (Sandbox Code Playgroud)

给出以下结果.

Before = 388116
After = 731248
Removed = 530176
Collected = 530176
Run Code Online (Sandbox Code Playgroud)

c# memory datatable garbage-collection

3
推荐指数
2
解决办法
2329
查看次数

标签 统计

c# ×1

datatable ×1

garbage-collection ×1

memory ×1