asp.net – .NET中的堆栈溢出将IIS发送到100%的CPU使用率 – 为什么没有StackOverflowE
|
我在Server 2008 R2 IIS 7.5上运行的ASP.NET应用程序中有一些代码.每当我加载一个特定页面,它将永久挂起,并将IIS发送到100%的CPU使用率.我最终跟踪了这个问题. public string Comments
{
get { return this.Comments; }
}
糟糕 – 应该已经返回this.Photo.Comments.所以我的问题是,为什么.NET不会生成一个StackOverflowException,而是让IIS以100%的CPU运行的时间远远超过了应用程序的时间.在我使用.NET编程的经验中,在执行上述操作时,需要几秒甚至更少的时间才能获得StackOverflowException.那么在IIS上还能运行几乎30分钟呢? 解决方法可能的JIT编译器优化了一个方法调用YourClass :: get_Comments()(这是IL将是什么样子),并内联代码与jmp(或任何x86汇编程序将是)循环构造,因为没有任何值被传递.只是一个想法.这篇旧文章值得一看:
正如:
我也用一个简单的控制台应用程序来转载: class Program
{
static void Main(string[] args)
{
MyClass mc = new MyClass();
string s = mc.Comments;
}
}
public class MyClass
{
public string Comments
{
get { return this.Comments; }
}
}
在关闭优化的调试模式下,我收到一个堆栈溢出异常.打开Jit Optimisations并编译发布版本后,该应用程序将永远运行.这表明可能发生了一个循环的内联. C#2.0,3.0和4.0也是如此. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP脚本中的Python 500服务器错误
- asp.net-mvc – 如何锁定ASP.NET MVC中的路径?
- asp.net – 单元测试和Log4net
- asp.net – .Net System.Mail.Message添加多个“To”地址
- asp.net-mvc – Chrome 27中SignalR和跨域请求的问题
- asp.net-mvc – HandleError属性没有任何效果
- asp.net – Bind()还是Eval()自动使用HtmlEncode来防范XSS?
- asp.net-mvc – asp.net mvc – 视图中的命名空间
- 我可以在ASP.NET中获取浏览器时区,还是依靠JS操作来检索信息
- .net – 在黄屏死亡的地方有执行吗?
- asp.net – 将web应用程序的项目编译成dll
- castle-windsor – 如何在ASP.NET 4 RC WebAPI中
- asp.net – 连接字符串最佳实践
- asp.net-mvc – ASP.NET MVC控制器的静态方法
- asp.net-mvc-3 – DropDownListFor中的ViewBag属
- asp.net – StyleCop vs ReSharper和一般编码风格
- Asp Classic返回具体的http状态码
- asp.net-mvc – 使用ASP.NET MVC导出数据到Excel
- asp.net-mvc – 在数据库中存储ASP.Net MVC视图
- asp.net-mvc – Visual Studio提示使用Razor语法
