我有一个简单的课程:
<div class="form-group">
<label>Author</label>
<%= text_input f, :author, class: "form-control" %>
</div>
当我点击button1时,托管内存(所有堆计数器中的字节数,perfmon)正在成长(正如预期的那样)。但是当我点击button2时,我希望应该释放托管内存。但它也长大了!!只有在第二次按钮2点击后,内存才会释放。 这种行为的解释是什么?
为什么,当应用程序刚刚启动时,“所有堆中的字节计数器”为0? 我认为它应该超过0。在托管堆上已经分配了一些对象。以MainWindow为例.. 谢谢,所有
答案 0 :(得分:0)
如果您致电GC.Collect
,则不会释放任何内存。没有root的对象只会存储在要释放的队列中。阅读以下内容:GC.WaitForPendingFinalizers Method ()
另请注意,大小超过~82MB
的对象会自动存储在gen2
中,因此就我所知,它们不会自动收集。
还有一个用于大对象的堆,称为:大对象堆(LOH)。有关详细信息,请查看:Why Large Object Heap and why do we care?
希望这些信息有所帮助。