我一直在压力测试一个非常简单的MVC3示例,其中控制器返回EmptyResult。
我在jMeter中设置了5个线程,它们不断点击返回EmptyResult的Controller操作并监视PerfMon中的内存使用情况(所有堆上的#字节数)。
我看到的奇怪的是它正在增加。在大约15分钟内从30MB到75MB。
这是正常的吗?我应该担心吗?
答案 0 :(得分:2)
你怎么知道它的泄漏?
可能GC最近没有完成,因为CPU太忙了。也许它存储会话变量,也许它不会立即回收线程。当有足够的可用内存时,可能无需运行GC。有很多解释
如果你监控GC,并看到很多完整的GC事件和内存使用仍然飙升可能它意味着什么,但只是看到堆上的总字节数上升是一个很长的路要走从吸烟枪。 RAM的正常 。
除非它崩溃和/或应用程序池不断回收,否则我会让它失去理智并转向其他事情。
答案 1 :(得分:1)
这是正常的,您不必担心,但是如果您想深入挖掘,可以使用任务处理器创建内存转储(右键单击流程 - >创建完整的Userdump)或使用Microsoft Debug诊断工具。
Windbg(Windows调试工具的一部分)可以显示当前内存中的内容,正在运行的线程数,垃圾收集器当前正在执行的操作等。
有关Tess 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