CPU 使用率が高い問題 (負荷テスト中に CPU クロックが約 80% になる) についてアプリケーションのプロファイリングを行っています。MS サポート チームから得たフィードバックの 1 つは、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 プロファイラーのサポートによると、すべてのメモリ スナップショットで完全な GC コレクションが実行されます。では、なぜその文字列がメモリに表示されるのでしょうか?
どんなアドバイスでも役に立ちます...
ありがとう