2012-11-09 30 views
0

我爲在線遊戲創建asp.net asmx服務。當它在生產服務器上運行時,asp.net應用程序使用1.5 - 3 GB的內存。ASP.Net應用程序池使用太多內存

當我使用ANTS內存分析器時,我看到了70%的應用程序內存是免費的,C#對象使用100-200Mb。

我如何讓asp.net將可用內存返回給操作系統?如果我將在一臺服務器上運行幾個類似的應用程序,我會得到內存異常。

二手利用研究: ASP.Net V4 的Windows 2008 C# 小使用asp.net cashe硬數據庫請求。

+0

您在編寫的程序中顯然存在巨大的內存泄漏。 ASPNET WP沒有任何問題會導致它消耗1.5到3GB的內存。 –

+0

你實際測試場景,「一臺服務器上幾個類似用途」? –

+0

你是如何使用緩存的?他們是否有到期日期或滑動到期。你有沒有嘗試禁用它們? Удачибраза。 –

回答

1

不幸的是,這是可能的。正如你可能知道CLR在堆中使用2種引用對象,標準和大對象堆。標準對象堆在垃圾回收器之後進行了碎片整理,但大型回收堆卻沒有,因爲CLR團隊認爲它會導致性能問題。這就是爲什麼LOH可以在使用過程中消耗大量內存。

的對象是比> 85000個字節被分配LOH較大,所以我的建議是要分析你的代碼,以發現能夠LOH分配對象,並設法使它們變得更小。

希望這會有所幫助。順便說一句,目前沒有100%的解決方案,我們都受到這個困擾。