我在应用程序中传递了大量数据作为byte []对象。在很多情况下,这也是存储问题。如果我在像
这样的类中包装byte []怎么办?[序列化] 公共类MyClass { public byte [] Data {get;组; } }
你们是否认为我会获得任何性能becoz现在引用类型将传递而不是值类型,因此数据不必每次都被复制。
期待您的回答
答案 0 :(得分:13)
为什么要改进?它只能让事情变得更糟。 byte[]
本身就是引用类型,而不是值类型。效果将是该类的一个不必要的间接和堆分配级别。
答案 1 :(得分:1)
您是否尝试过内存分析工具以找出内存泄漏的位置?
如果您使用dotTrace之类的工具来创建实际的内存配置文件,然后找到程序的哪些部分正在占用内存,我认为您可以更轻松地识别您的问题。
这是你唯一能找到解决记忆问题的真正解决方案的方法。
答案 2 :(得分:0)
由于字节数组仍然存在,因此无关紧要。
但是,如果你愿意为内存牺牲性能,我建议你确实将你的字节数组包装在一个对象中,但是将数组本身保存在磁盘上,只在需要时才读取它。即proxy个对象。
当然,这取决于您的应用程序以及如何使用字节。例如,如果客户端只需要部分数据,您甚至可能不需要加载整个数组。
答案 3 :(得分:0)
正如Mehrad Afshari已经指出的那样,byte []已经是一种引用类型。
考虑:
您应该检查您是否在适当的时候引用相同的实例(即确保您没有多次反序列化实例以进行只读访问),并且您可能希望在适当的情况下实施一些压缩。还要考虑是否可以将数组划分为更小的块并按顺序对它们进行操作。