簡體   English   中英

128 GB Ram x64 cpu上的內存不足問題

[英]Out of Memory issue on a 128 GB Ram x64 cpu

我正在開發一個程序,它將312 MB的加密文件讀入內存流,對其解密並復制到目標流中。 我的程序可以很好地運行,文件大小約為120 MB。 我不知道為什么它失敗了?

我的系統信息:64位cpu,RAM:128 GB也是我使用Configuration Manager中的任何CPU設置構建的c#代碼。

我編寫了一個示例程序來檢查內存不足的地方,我發現它在512 MB時失敗。 我確實知道隨着RAM碎片化,內存流需要內存中的連續塊。 但是這里的RAM很大,我也嘗試在多台機器上使用14 GB,64GB和8GB的RAM。

任何幫助表示贊賞。

我編寫的用於測試內存不足大小的示例程序:

 const int bufferSize = 4096;
            byte[] buffer = new byte[bufferSize];

            int fileSize = 1000 * 1024 * 1024;

            int total = 0;

            try
            {
                using (MemoryStream memory = new MemoryStream())
                {
                    while (total < fileSize)
                    {
                        memory.Write(buffer, 0, bufferSize);
                        total += bufferSize;
                    }

                }

                Console.WriteLine("No errors");

            }
            catch (OutOfMemoryException)
            {
                Console.WriteLine("OutOfMemory around size : " + (total / (1024m * 1024.0m)) + "MB");
            }

我猜只是快用完大對象堆了。 但是,解決問題的另一種方法是不將流讀取到內存中-大多數解密算法只需要System.IO.Stream-將其讀取到內存中似乎是相對沒有意義的步驟-只需將解密api傳遞給傳入文件或網絡流即可。

嘗試從項目的屬性中禁用“首選32位”選項,在“構建”選項卡中,這對我有用。 祝好運!

暫無
暫無

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

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