我们看到大量的虚拟内存碎片和内存不足错误,然后它达到了3 3GB的限制。
编译调试在web.config中被设置为真,但我从我问到的每个人那里得到了不同的答案,调试设置为真是否会导致每个aspx编译到ram的随机区域,从而使ram碎片化,并最终导致内存不足问题?
发布于 2009-03-07 10:09:02
在web.config中,调试标志应该设置为false,除非您确实需要调试应用程序。
在调试模式下运行会在一定程度上增加内存使用量,但不太可能出现像您所说的那样严重的问题。但是,您应该将其设置为false,以消除它所具有的效果,并查看是否可以注意到任何改进。
在调试模式下运行时,垃圾回收的工作方式不同。变量的生命周期从它的实际使用扩展到变量的作用域(以便能够在调试器中显示值)。这会使一些对象在被垃圾回收之前存活更长时间。
在调试模式下编译时,编译器不会优化代码,而且还会添加一些额外的nop
指令,以便每行代码至少有一条可以放置断点的指令。
在调试模式下抛出异常所需的时间要长得多。(但是,通常情况下,代码不应该经常抛出异常。)
发布于 2009-03-07 09:33:29
AFAIK "debug = true“不会导致您提到的情况。
我曾经在ASP.NET应用程序中遇到过同样的问题,该应用程序可以动态创建图像。
因此,我认为您遇到了未处理资源的问题。
如果将带有代码隐藏文件的aspx文件部署到服务器。当请求到达aspx时,它将被编译一次。然后,它将被存储到缓存中,直到文件发生更改。
发布于 2010-05-19 05:51:19
在生产系统上,始终设置Debug=false。正如该标志所暗示的那样,只有在调试开发系统时才应将其设置为true。
此标志与您的内存碎片问题无关。
https://stackoverflow.com/questions/621572
复制相似问题