我的應用程序需要解壓縮包含大量Deflate壓縮塊(以及其他類型的壓縮和加密)的文件。內存分析表明,deflate流構造函數負責在其生命週期內分配大部分應用程序的內存(54.19%,其次是DeflateStream.read,12.96%,其他所有內容在2%以下)。爲了說明問題,每個文件塊通常爲4KiB(解壓縮),而DeflateStream的構造函數的分配略大於32KiB(推測爲滑動窗口)。垃圾收集器有一個現場日,因爲所有這些放氣的流幾乎沒有時間(在下一個進入之前每個都消失)!再見緩存效率。使用DeflateStream時可以使用更少的內存嗎?
我可以繼續使用DeflateStream,但我想知道是否有更好的選擇。也許有一種方法來重置流並再次使用它?
我正在檢查一般區域,因爲工作量稍大的性能問題,但我通過將操作移出UI線程來解決這個問題。這種記憶是我在分析問題時注意到的事情之一。感覺就像我正在分配,更重要的是,當我只需要一個32KiB緩衝區時,將所有這些緩衝區置零。 – 2009-05-27 00:45:41