簡體   English   中英

你能給我一個在.NET中導致內存碎片的例子嗎?

[英]Can you give me an example that causes memory fragmentation in .NET

我正在努力通過在內存中緩存更多內容來使我們的應用程序更高效。 但是,令我擔心的是,我正在閱讀的有關大型對象堆如何在垃圾收集過程中沒有真正壓縮的情況,以及這會導致內存碎片化。

我一直在做一些小測試,但似乎我無法引發這個問題。 所以這是我的問題:你能告訴我C#中的代碼片段,在某種程度上會因內存碎片導致失敗嗎?

試着看一下本文中的代碼片段大對象堆的危險,並在填充函數的catch塊之后實現此代碼,以便對LOH進行分段,如cfneese在2011年4月11日發表的評論中所述對於錯誤大對象堆碎片導致OutOfmemoryException

        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();
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM