gpt4 book ai didi

c# - 内存不足异常

转载 作者:行者123 更新时间:2023-11-30 13:09:01 26 4
gpt4 key购买 nike

我正在使用 C# 和 asp.net 开发一个网络应用程序,我一直收到内存不足异常。该应用程序所做的是从数据源读取一堆记录(产品),可能是数百/数千,通过向导中的设置处理这些记录,然后使用处理产品信息更新不同的数据源。虽然有多个数据库类,但现在所有的逻辑都在一个大类中。这样做的唯一原因是所有信息都与一件事有关,即产品。如果我将我的应用程序分成不同的类,它会有助于内存吗?我认为不会,因为如果我将业务逻辑分为两个类,那么这两个类在相互发送消息的整个过程中都会保持事件状态,所以我不知道这会有什么帮助。我想我的另一个解决方案是找出是什么占用了所有内存。有什么好的工具可以推荐吗??

谢谢

最佳答案

您是否正在使用数据读取器来流式传输您的数据? (避免加载太多到内存中)

我的直觉告诉我这是一个需要解决的微不足道的问题,不要抽取包含 100 万条记录的数据表,一次处理一行或小批量处理表...完成后释放并处置对象跟他们。 (例如:没有 static List<Customer> allCustomers = AllCustomers() )
制定一项开发规则,确保在涉及的行数超过 X 时,没有人将表读入内存。

如果您需要调试工具,请查看 .net memory profilerwindbg with the sos extension两者都允许您嗅探您的托管堆。

另一个注意事项是,如果您关心可维护性并希望减少缺陷数量,请以更符合您的领域的方式正确删除 SuperDuperDoEverything 类和模型信息。 SuperDuperDoEverything 类是一个等待爆炸的炸弹。

关于c# - 内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505882/

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