我有一个用C#编写的TCP服务器,它处理发送给它的POST数据。目前它工作正常,除非大量的数据(即大于1GB)被发送到它然后它耗尽内存(我将它全部存储在内存中作为一个字节数组(中间的List DTO))。现在,对于大文件,我将流式传输到磁盘,然后传递文件名以便从磁盘进行流式传输。TCP服务器和MemoryStreams/ByteArrays
目前我所有的例程都是为了预期字节数组而写的,事后看来,这是有点短视的。如果我只是将bytearray转换为内存流,它会使内存使用量翻倍吗?我认为重写我的代码以在memorystream上工作将允许我在从磁盘读取流时重新使用它。
对不起,愚蠢的问题,我不知道什么时候c#获取数据的副本或何时需要引用。
OP询问关于传递一个字节[],据我所知,所有数组都是引用类型。它可能会保存值类型(在这个例子中是字节),但是数组本身是一个引用类型。 – trickdev 2011-11-21 11:43:32