2011-11-18 28 views
3

我有一個WPF(C#3.5)應用程序,它擁有大量的線程......最近我的線程在ThreadWaitReason PageIn中陷入困境(我設法使用Memory Profiler發現它)。 堅韌我可以理解消息,我不確定它的真正含義,以及如何避免/解決此問題... 您的幫助真的很感謝! 非常感謝!ThreadWaitReason - 線程正在等待虛擬內存頁面到達內存中

統計
內存消耗:456mb
專用字節:364MB
.NET專用字節用法:150MB
ProcessThreads:76(所有的人都處於觀望狀態,threadwaitreason:頁面調

該工具會警告一條消息:「內存碎片限制了可以分配的對象的大小。」

+4

「噸的線程」是什麼意思?一噸多少個線程? (並且注意,這不是一個有趣的嘗試,我真的很想知道你在該應用中有多少個線程。) –

+0

'線程正在等待虛擬內存頁面到達內存中。 Windows任務管理器查看哪個應用程序消耗了所有虛擬內存 – sll

+1

「線程數量」究竟有多少?應用程序消耗多少內存?什麼是正常的CPU負載? 「卡住」究竟意味着什麼?他們多久被「卡住」? –

回答

1

如果用完所有可用物理內存你最終會分頁到與RAM相比需要花費大量時間讀取頁面的磁盤。這就是爲什麼你的線程正在等待頁面加載。

您提到的警告是由於內存的分配和釋放會導致內存碎片化,空閒內存塊之間存在間隙。如果碎片嚴重,空閒塊可能非常小,以至於無法根據需要自由分配內存。