gpt4 book ai didi

c# - 在后台 worker 中序列化数据 - 内存不足异常

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

我正在使用 binaryformatter 序列化一个类并使用 deflatestream 压缩数据。保存函数如下,由后台 worker 调用:

public static void save(System system, String filePath) 
{
//Make filestream
FileStream fs = new FileStream(filePath, FileMode.Create);
try
{
//Serialize offerte
BinaryFormatter bf = new BinaryFormatter();
DeflateStream cs = new DeflateStream(fs, CompressionMode.Compress);

bf.Serialize(cs, system);

//Push through
fs.Flush();
cs.Flush();
cs.Close();
}
catch (Exception e)
{
var mess = e.Message;
}
finally
{
//Close
fs.Close();
}
}

该类有许多“用户”。对于 100 个用户,需要 10 秒,文件大小为 2MB。对于 1000 个用户,它会出现内存不足异常(估计大小为 16MB)。任何人都可以在这里看到问题,或提出如何解决这个问题的建议吗?(我最初认为后台线程上的时间是造成这种情况的原因,它需要很长时间。但我有其他可以运行更长时间的后台线程。)

最佳答案

你没有处理你的流,这可能是问题的一部分,建议:

public static void save(System system, String filePath) 
{
//Make filestream
using(FileStream fs = new FileStream(filePath, FileMode.Create))
{
//Serialize offerte
BinaryFormatter bf = new BinaryFormatter();

using (DeflateStream cs = new DeflateStream(fs, CompressionMode.Compress)) {

bf.Serialize(cs, system);

//Push through
fs.Flush();
cs.Flush();
cs.Close();
}
}
}

这也消除了您的异常吞噬,这可能是一件好事。

关于c# - 在后台 worker 中序列化数据 - 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124287/

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