我寫了一個小型的內部C#程序,它在各種文件格式之間批量轉換,主要依賴於其他API。目前,UI生成一個BackgroundWorker(不是線程)來處理轉換,然後用作爲工作者完成作業時清空的請求填充隊列。隊列對象本身非常小(3個字符串,告訴工作人員該做什麼),並且對程序的內存佔用量沒有太大貢獻。我的內存管理非常嚴格(完成後丟棄圖像,並在某些時候手動進行垃圾收集)。但是,程序一次只能使用大約100 MB的內存,並且佔用了大約50%的內存總CPU時間。這似乎是如果我天真地執行線程,它會很快用完系統內存(除非CLR做了某種我不知道的魔法)。防止多線程應用程序內存不足
是否有一種簡單/有效的方法來產生線程來防止除了捕獲OutOfMemory異常並回滾已死的線程(似乎效率很低,但沒有辦法在不使用大量內存的情況下保留狀態)之外,系統還會耗盡內存。
我們在說多少個話題?你提到UI和一名工作人員......但這不應該是一個大問題;你是否會產生很多線程? – 2009-05-27 20:30:42