我有一个内存泄漏问题的应用程序。
在调查时,我发现Byte[]
不断增加,所以我使用Red-Gate ANTS Memory Profiler,我看到了一个非常大的byte []实例(16,777,228字节)。当我检查保留图时,它会显示:
现在这对我来说很奇怪,因为我希望看到我的一个类与这个内存流之间的链接。
我的理解缺乏什么?为什么这种记忆增加发生以及如何阻止呢?
谢谢。
答案 0 :(得分:0)
由.NET直接管理的内存通常不会泄漏"。它是管理的。 MemoryStream
非常类似于List<byte>
(更确切地说,它是Stream
实施,内部使用byte[]
,像{{1}一样处理它}} 将)。它非常简单,如果你看看它的代码,你可以在一小时内重写它。里面没有黑魔法。没有搞笑的节目。什么都没有。
所以:
List<byte>
或MemoryStream
。 或
.ToArray()
固定.ToArray()
的结果。然后.NET就不会释放它。答案 1 :(得分:0)
你要么
在这两种情况下,对象都不会被释放并将被保存在内存中