0

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 コレクションが実行されます。では、なぜその文字列がメモリに表示されるのでしょうか?

どんなアドバイスでも役に立ちます...

ありがとう

4

1 に答える 1

0

問題は解決されました。これは依存チームの再利用可能なコードの 1 つであることが判明しました。そこでは、linq クエリがあり、linq クエリ内で ToUpper および Trim 関数を使用して文字列比較を行っていました。

リスト全体のループになるため、ロジックの一部は CPU を消費していました。

ありがとう

于 2013-05-02T16:49:58.713 に答える