我有一个WPF(C#3.5)应用程序,它有大量的线程...最近我的线程被困在ThreadWaitReason PageIn(我已经设法使用Memory Profiler发现它)。 我很难理解这个消息,我不确定它的真正意义,我怎样才能避免/解决这个问题...... 非常感谢您的帮助! 非常感谢你!
统计
内存消耗:456mb
专用字节:364mb
.NET专用字节用法:150mb
ProcessThreads:76(所有这些都处于等待状态,threadwaitreason:pagein
该工具警告一条消息:“内存碎片限制了可以分配的对象的大小。”
答案 0 :(得分:1)
如果耗尽所有可用的物理内存,最终将分页到磁盘,与RAM相比,这需要花费大量时间来读取页面。这就是你的线程正在等待加载页面的原因。
你提到的警告是由于内存的分配和释放导致内存被碎片化,空闲内存块之间存在间隙。如果碎片很严重,那么免费块可能会很小,以至于您无法按照自己的意愿自由分配内存。