gpt4 book ai didi

C# BinaryWriter 内存泄漏

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:31 24 4
gpt4 key购买 nike

<分区>

我最近一直在使用 DotSpatial 库,发现我的程序内存泄漏非常严重。我一直在使用 VS 内存诊断工具,并设法将问题缩小到以下(简化的)代码块:

using (var inMemoryStream = new MemoryStream())
using (var _writer = new BinaryWriter(inMemoryStream))
{
WriteHeader(_writer);
_writer.Close();
}

BinaryWriter 对象维护对分配给它的 OutStream 属性的 inMemoryStream 对象的引用。似乎无论使用何种处置方法(使用/关闭/处置),此内存流都不会释放为其缓冲区分配的内存。

我设法通过创建一个继承自 BinaryWriter 的类、覆盖 Close() 并向该方法添加“OutStream = null”来解决这个问题,但这看起来很笨拙。

我错过了什么吗? BinaryWriter 不应该完全处理传递给它的流吗?似乎 BinaryWriter.Close() 确实尝试为此效果做一些事情,因为使用智能感知查看 OutStream 的某些属性会显示 ObjectDisposed 异常。如果这有所不同,我正在使用 .NET 4.5.2。

提前多谢指教

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com