2011-08-17 120 views
3

我一直在壓力測試一個非常簡單的MVC3示例,其中控制器返回一個EmptyResult。MVC3中的內存增加

我在jMeter中設置了5個線程,該線程不斷地觸發返回EmptyResult的Controller操作並監視PerfMon中的內存使用情況(所有堆上的#字節)。

我看到的奇怪之處在於它越來越多。在15分鐘內從30MB到75MB。

這是正常的嗎?我應該擔心嗎?

回答

1

這是正常現象,您應該不用擔心,但是如果您想深入挖掘一下,可以使用任務處理器創建內存轉儲(右鍵單擊進程 - >創建完整用戶轉儲)或使用Microsoft調試診斷工具。

WinDBG的(調試工具的Windows的一部分),那麼可以告訴你什麼是目前在內存中,許多線程是如何運行的,什麼垃圾收集目前正在做等

有一個很好的教程HOWTO苔絲Ferrandez開始 http://vimeo.com/9936296

相關鏈接: http://windbg.info/doc/1-common-cmds.html http://kentb.blogspot.com/2007/11/windbg-sos-cheat-sheet.html http://geekswithblogs.net/.netonmymind/archive/2006/03/14/72262.aspx

2

你怎麼知道它的泄漏?

也許GC最近沒有完成,因爲CPU太忙了。也許它存儲會話變量,也許它不立即回收線程。當有足夠的內存可用時,GC可能不需要運行。有很多解釋

的如果監控GC,看到的滿GC事件和內存的使用仍然飛漲也許這意味着什麼,只是看到在堆的總字節數上升是一個長期的從吸菸槍的方式。這是正常爲RAM是使用

除非它的崩潰和/或應用程序池不停地回收,否則我會讓它滑過你的頭腦並轉移到其他東西上。

+0

我不知道,如果它是l eaking。我關心的一點是控制器返回一個空的頁面仍然分配內存並且繼續分配它。 – 2011-08-17 13:28:19