我正在通过在内存中缓存更多的内容来增强我们的应用程序性能。然而,令我担忧的是,我读到的关于大对象堆在垃圾回收过程中并没有真正紧凑的文章,这可能会导致内存碎片。
我进行了一些小型测试,但似乎无法引起此问题。那么我的问题是:你能给我展示一段C#代码片段,它将在某个时刻由于内存碎片而导致失败吗?
我正在通过在内存中缓存更多的内容来增强我们的应用程序性能。然而,令我担忧的是,我读到的关于大对象堆在垃圾回收过程中并没有真正紧凑的文章,这可能会导致内存碎片。
我进行了一些小型测试,但似乎无法引起此问题。那么我的问题是:你能给我展示一段C#代码片段,它将在某个时刻由于内存碎片而导致失败吗?
unsafe
{
var w = new StreamWriter(@".\test.txt");
for (int i = 0; i < count; i++)
{
var handle = GCHandle.Alloc(smallBlocks[i], GCHandleType.Pinned);
w.WriteLine(String.Format("{0,10}\t{1,10}", i, handle.AddrOfPinnedObject()));
handle.Free();
}
w.Close();
}