gpt4 book ai didi

c# - 大数据量的 MemoryStream 替代方案

转载 作者:行者123 更新时间:2023-11-30 19:42:11 24 4
gpt4 key购买 nike

如果数据很大且进程为 32 位,则在使用 .Net MemoryStream 时我会遇到内存不足异常问题。

我相信 System.IO.Packaging API 会随着数据量的增加悄悄地从内存切换到文件支持的存储,从表面上看,似乎可以实现 MemoryStream 的一个子类,它确实完全一样。

有人知道这样的实现吗?我很确定框架本身没有任何内容。

最佳答案

程序员极力避免使用文件。内存和文件之间的区别在 Windows 中非常小。您用于 MemoryStream 的任何内存实际上都需要一个文件。存储由分页文件 c:\pagefile.sys 支持。反之亦然,您使用的任何文件都有内存支持。文件数据由文件系统缓存缓存在 RAM 中。因此,如果机器有足够的 RAM,那么如果您使用 FileStream,您实际上只会从内存读取和写入内存。并通过使用内存获得您期望的性能。它是完全免费的,您不必编写任何代码来启用它,也不必管理它。

如果机器没有足够的 RAM,那么它会以同样的方式恶化。当您使用 MemoryStream 时,分页文件开始垃圾处理,磁盘会减慢您的速度。当您使用文件时,数据将不适合文件系统缓存,您将被磁盘拖慢速度。

您当然会得到使用文件的好处,您不会再耗尽内存了。请改用 FileStream。

关于c# - 大数据量的 MemoryStream 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921880/

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