0

我一直在分析我的应用程序是否存在高 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 收集。那为什么那个字符串会出现在内存中?

任何建议都会有所帮助...

谢谢

4

1 回答 1

0

问题已解决。它被发现是依赖团队的可重用代码之一,他们有一个 linq 查询,在 linq 查询中,他们使用 ToUpper 和 Trim 函数进行字符串比较。

因为,它将在整个列表中循环,这部分逻辑是 CPU 昂贵的。

谢谢

于 2013-05-02T16:49:58.713 回答