我有一個小的WCF服務,它在VM上運行256個RAM的XP盒子上執行。aspnet_wp由於高內存消耗而不斷回收。我該如何解決它?
當我提出一個要求(約爲5mbs請求大小),該服務我總是在事件日誌中以下消息:
ASPNET_WP.EXE被回收,因爲內存消耗超過了153 MB (可用RAM的60%)。
和調用失敗,錯誤500
我試圖增加內存限制到95%,但它仍然佔用了所有可用內存,並無法以同樣的方式。
它看起來像我的應用程序有問題(我不重複使用byte []緩衝區,也許別的東西),但我找不到這種內存過度使用的根本原因。
分析顯示,我在內存中共享的所有CLR對象不佔用太多空間。
使用windbg進行轉儲分析顯示了相同的情況 - 對象堆沒有那麼大。
如何找出造成這種內存過度使用的原因?
是否有任何方法在流程被回收之前進行轉儲(在mem使用率高峯期間)?
我學到了很多使用Tess的演練和調試工具。這絕對值得你花時間。 – 2009-08-05 12:34:41