我有一個轉換文件的程序。它需要一個輸入文件名和一個輸出文件名,從一個文件讀取並寫入另一個文件,並進行一些修改。我有來源,但它很龐大,我沒有清楚的操作畫面。我可以說文件是以讀寫模式(_O_RDWR)使用_wsopen_s打開的,在開放時似乎沒有任何有趣的事情發生。Win32文件耗盡系統內存的I/O
出於某種原因,當我嘗試在某個大型輸入文件中使用此程序時,會發生以下情況。首先,物理內存使用率和用於文件系統高速緩存(由任務管理器報告)的內存量增加。看起來,對於每個字節的讀取和字節寫入,內存使用量增加2個字節。請注意,這是由操作系統擁有的內存:提交大小和實際可執行文件的工作集大小保持不變。
然後,當文件系統高速緩存大小接近總可用內存時,操作系統開始將正在運行的程序交換到頁面文件中,最終系統變得無響應。
該程序的作者說,他們沒有看到這種類型的行爲,他們不知道爲什麼會發生這種情況。
在我正式提出這是一個錯誤,並試圖讓他們來修復它(這可能需要很長的時間,我需要的程序現在的工作):
- 有沒有在源代碼中的任何我可以尋找,某種潛行的函數調用,可能會觸發這種類型的行爲?
- 我可以告訴操作系統不要這樣做嗎?
- 而且,更普遍的是什麼?
這發生在x64 Vista Home Premium SP2上。
有一個與W2k8相似的已知問題。你嘗試過Google嗎?並確定它不泄漏手柄? – ruslik 2010-10-28 04:34:15
它不會泄漏手柄。谷歌沒有幫助。 – user434507 2010-10-28 04:58:03
我正在投票結束這項工作,因爲這不是一個編程問題,而是程序編寫者的客戶支持問題。如果程序是打包軟件並且不起作用,他們應該修復它,或者退還您的資金。 – 2010-10-28 13:35:43