我需要从数据库 (nvarchar) 中提取大型 Unicode 文本字符串(例如 200Mb)并存储在内存中进行处理。即我需要随机访问字符串的所有部分。
从严格以内存为中心的角度来看,使用 System.IO.MemoryStream 与 System.String 作为我的内存表示的优缺点是什么。
我正在尝试研究的一些因素是:
- 这些对象如何在 [假设的] 高度碎片化的低内存环境中发挥作用
- 不变性
- 内存中的实际大小(如果流是 UTF8,我们是否将大小减半)
- 还有一个我没有想过的对象吗?
我正在寻找关于这些点的清晰和建议,以及我没有想到的任何其他内存考虑?
注意:处理这些字符串可能有更好的方法,但此时我只是询问存储此类对象的内存考虑。