我正在开发一个C#应用程序,但是该应用程序面临内存不足的问题,因为许多对象在大对象堆中分配了内存。
我的C#应用程序需要处理许多大文件(作为字符串对象),因此这种字符串类型对象的内存会一次又一次地从大对象堆中分配(从而导致LOH碎片化)。
由于字符串是不可变对象,因此始终会为该对象分配新的LOH内存。我的问题是,是否有一种方法可以在大对象堆中预先分配一些内存,并始终将同一内存分配给字符串对象。
更详细的解释如下: 正如我所提到的,我正在处理这些大文件。为了进行处理,我必须将其转换为字符串。即使我使用stringBuilder,也没有太大帮助,因为一旦我将其转换为String,就会为其分配单独的内存空间在LOH中。
因此,我希望能够预先在内存中分配一些空间,比如说100 KB,每当我读取一个新文件并将其转换为字符串时,这100 KB就被分配出去。
StringBuilder
,它基本上是一个可变字符串。 - Lasse Espeholt