C#管理内存泄漏

时间:2015-11-12 08:35:20

标签: c# garbage-collection heap-memory

我有一个简单的课程:

  <div class="form-group">
    <label>Author</label>
    <%= text_input f, :author, class: "form-control" %>
  </div>

当我点击button1时,托管内存(所有堆计数器中的字节数,perfmon)正在成长(正如预期的那样)。但是当我点击button2时,我希望应该释放托管内存。但它也长大了!!只有在第二次按钮2点击后,内存才会释放。 这种行为的解释是什么?

为什么,当应用程序刚刚启动时,“所有堆中的字节计数器”为0? 我认为它应该超过0。在托管堆上已经分配了一些对象。以MainWindow为例.. 谢谢,所有

1 个答案:

答案 0 :(得分:0)

如果您致电GC.Collect,则不会释放任何内存。没有root的对象只会存储在要释放的队列中。阅读以下内容:GC.WaitForPendingFinalizers Method ()

另请注意,大小超过~82MB的对象会自动存储在gen2中,因此就我所知,它们不会自动收集。

还有一个用于大对象的堆,称为:大对象堆(LOH)。有关详细信息,请查看:Why Large Object Heap and why do we care?

希望这些信息有所帮助。