2011-08-17 76 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