jjzjj

memoryStream

全部标签

c# - 如果 .NET 中的 MemoryStream 未关闭,是否会产生内存泄漏?

我有以下代码:MemoryStreamfoo(){MemoryStreamms=newMemoryStream();//writestufftomsreturnms;}voidbar(){MemoryStreamms2=foo();//dostuffwithms2return;}我分配的MemoryStream是否有可能以后因某种原因无法处理?我有一个同行评审坚持要我手动关闭它,但我找不到信息来判断他的观点是否有效。 最佳答案 你不会泄漏任何东西——至少在当前的实现中是这样。调用Dispose不会更快地清理MemoryStream使

c# - 将 Stream 转换为 String 并返回

我想将对象序列化为字符串,然后返回。我们使用protobuf-net成功地将对象转换为Stream并返回。然而,Streamtostringandback...不是那么成功。在经过StreamToString和StringToStream之后,新的Stream不是由protobuf-net反序列化;它引发了一个ArithmeticOperationresultedinanOverflow异常。如果我们反序列化原始流,它就可以工作。我们的方法:publicstaticstringStreamToString(Streamstream){stream.Position=0;using(St

c# - 将 Stream 转换为 String 并返回

我想将对象序列化为字符串,然后返回。我们使用protobuf-net成功地将对象转换为Stream并返回。然而,Streamtostringandback...不是那么成功。在经过StreamToString和StringToStream之后,新的Stream不是由protobuf-net反序列化;它引发了一个ArithmeticOperationresultedinanOverflow异常。如果我们反序列化原始流,它就可以工作。我们的方法:publicstaticstringStreamToString(Streamstream){stream.Position=0;using(St

c# - 将 MemoryStream 保存到文件或从文件加载 MemoryStream

我正在将一个结构序列化到MemoryStream中,我想保存和加载序列化的结构。那么,如何将MemoryStream保存到文件中并从文件中加载它呢? 最佳答案 您可以使用MemoryStream.WriteTo或Stream.CopyTo(框架版本4.5.2、4.5.1、4.5、4支持)方法写入内存内容流到另一个流。memoryStream.WriteTo(fileStream);更新:fileStream.CopyTo(memoryStream);memoryStream.CopyTo(fileStream);

c# - 将 MemoryStream 保存到文件或从文件加载 MemoryStream

我正在将一个结构序列化到MemoryStream中,我想保存和加载序列化的结构。那么,如何将MemoryStream保存到文件中并从文件中加载它呢? 最佳答案 您可以使用MemoryStream.WriteTo或Stream.CopyTo(框架版本4.5.2、4.5.1、4.5、4支持)方法写入内存内容流到另一个流。memoryStream.WriteTo(fileStream);更新:fileStream.CopyTo(memoryStream);memoryStream.CopyTo(fileStream);

c# - 从流创建字节数组

从输入流创建字节数组的首选方法是什么?这是我当前使用.NET3.5的解决方案。Streams;byte[]b;using(BinaryReaderbr=newBinaryReader(s)){b=br.ReadBytes((int)s.Length);}读取和写入流的block仍然是更好的主意吗? 最佳答案 这实际上取决于您是否可以信任s.Length。对于许多流,您只是不知道会有多少数据。在这种情况下——在.NET4之前——我会使用这样的代码:publicstaticbyte[]ReadFully(Streaminput){byt

c# - 从流创建字节数组

从输入流创建字节数组的首选方法是什么?这是我当前使用.NET3.5的解决方案。Streams;byte[]b;using(BinaryReaderbr=newBinaryReader(s)){b=br.ReadBytes((int)s.Length);}读取和写入流的block仍然是更好的主意吗? 最佳答案 这实际上取决于您是否可以信任s.Length。对于许多流,您只是不知道会有多少数据。在这种情况下——在.NET4之前——我会使用这样的代码:publicstaticbyte[]ReadFully(Streaminput){byt

c# - 有没有办法压缩内存中的对象并透明地使用它?

我目前正在构建一个处理大量数据的分析应用程序。典型情况如下所示:用户选择一个文件夹,其中包含大约600个测量文件,每个文件包含大约40.000到100.000个值。应用程序将这些值读入一个对象,该对象在内部用作数据缓存,因此不必在每次访问时都读取文件。这很好用,但我注意到内存消耗非常高,最终可能会变得太大。在我的测试中,当应用程序的内存消耗超过2GB的RAM时,应用程序崩溃了。保存数据的数据结构尽可能的简单,它基本上只是由一些字典组成,字典以2级嵌套的方式包含数据,没什么复杂的。我想知道是否有一种方便的方法可以将此对象以压缩形式存储在RAM中。我知道这会降低性能,但在我的情况下这是完全

c# - 有没有办法压缩内存中的对象并透明地使用它?

我目前正在构建一个处理大量数据的分析应用程序。典型情况如下所示:用户选择一个文件夹,其中包含大约600个测量文件,每个文件包含大约40.000到100.000个值。应用程序将这些值读入一个对象,该对象在内部用作数据缓存,因此不必在每次访问时都读取文件。这很好用,但我注意到内存消耗非常高,最终可能会变得太大。在我的测试中,当应用程序的内存消耗超过2GB的RAM时,应用程序崩溃了。保存数据的数据结构尽可能的简单,它基本上只是由一些字典组成,字典以2级嵌套的方式包含数据,没什么复杂的。我想知道是否有一种方便的方法可以将此对象以压缩形式存储在RAM中。我知道这会降低性能,但在我的情况下这是完全

c# - 填充 MemoryStream : 256MB allocation on 16GB system 时出现 OutOfMemoryException

我在我的开发IIS服务器(来自VS2010IDE)上运行以下方法,在64位Windows7机器上安装了16GB内存:publicstaticMemoryStreamcopyStreamIntoMemoryStream(Streamstream){longuiLen=stream.Length;byte[]buff=newbyte[0x8000];intnSz;MemoryStreamms=newMemoryStream();try{while((nSz=stream.Read(buff,0,buff.Length))!=0){ms.Write(buff,0,nSz);}}finally