我一直在分析我的应用程序是否存在高 CPU 问题(负载测试期间 CPU 时钟频率约为 80%)。我们从 MS 支持团队得到的反馈之一是 Full GC 每 2 秒运行一次,这是 CPU 密集型的,他们提到创建了许多字符串对象。因此,我一直在使用 ANTS 分析器对应用程序进行分析,并且我看到我们在自定义 Web 控件中动态呈现的 html 标记被保存在内存中(由 ANTS 分析器显示)。即使我们动态绑定到按钮 onclick 事件的字符串被保存在内存中。
例如:
protected void Page_Load(object sender, EventArgs e)
{
Button1.Attributes.Add("OnClick", "return ValidateTheWorksheet('Default');");
}
在上面的代码中,ANTS 分析器显示"return ValidateTheWorksheet('Default');"
,即使在页面完全呈现后,String 也会保留在内存中。
ANTS profiler 支持说每个内存快照都会进行一次完整的 GC 收集。那为什么那个字符串会出现在内存中?
任何建议都会有所帮助...
谢谢