在C#中,我正在使用FileStream在另一个Windows机器上托管的网络上打开文件,我很好奇这会对托管该文件的计算机产生什么影响。访问计算机是否只是直接通过硬盘从块中获取块?主机是否将文件放入内存?我想这有点超出实际的编程区域,因为这可能是操作系统级别的更多内容,但我想我会问这里。
我主要担心的是,如果主机实际上必须打开文件到内存中发送它们,如果同时访问大量文件,我可能会耗尽其内存。
答案 0 :(得分:0)
Windows使用SMB协议进行远程文件读/写。可以找到参考信息at msdn。
它不会加载主机服务器内存中的所有内容,传输将被流式传输。即使您在客户端上调用File.ReadAllBytes(),主机服务器也会通过SMB协议将其传输到客户端。
主机上的内存利用率取决于一次连接的客户端数量。同时传输文件的更多客户端自然意味着主机上的内存利用率更高。除此之外,单个文件传输本身对主机中额外的内存分配影响很小。