[解決済み] .net の OOM 問題を解決する必要があります。
2022-03-10 09:12:34
質問内容
OOMの問題があります。WinDbgを使用してOOM Exceptionの原因を突き止めようとしましたが、うまくいきませんでした。
Infragistics のウルトラグリッドで、11000行を読み込むウィンドウズフォームがあります。各行は、削除ビットマップを描画します。 私は多くのマシンでそれを再現することはできませんが、クライアントが非常に頻繁に報告したので、私はメモリダンプを要求しました。
さらに上を目指すには、助けが必要です。
サイズ=1.9GBのメモリダンプがあります。
以下のステップに従いました。
.loadby sos clr
!スレッド
!pe 3c61f7d0
!ダンプヒープ -stat
OOMのタイプ候補にはならないようです。
どのオブジェクトが85k以上のメモリを使用しているかを把握するために、!dumpheap -min 85000 -statを実行したところ、以下のようになりました。
統計情報です。
MT Count TotalSize Class Name
0028cd20 1 438732 無料
合計 1 オブジェクト
!finalizequeue
解決方法は?
問題は、Infragisticsグリッドの設定方法でした。 その答えは、こちらのリンク先にも書かれています。
http://www.infragistics.com/community/forums/t/56315.aspx
OOM問題を発生させたコードは:
private static void ConfigureDeleteColumnOn(UltraGridBand band)
{
band.Columns.Add(DELETE_BUTTON);
band.Columns[DELETE_BUTTON].EditorControl = GetDeleteButtonEditor();
}
private static Control GetDeleteButtonEditor()
{
UltraTextEditor editor = new UltraTextEditor();
EditorButton btn = new EditorButton
{
Appearance =
{
Image = Resources.Resources.delete,
ImageBackgroundStyle = ImageBackgroundStyle.Centered
}
};
editor.EditorButtonClick += editor_EditorDeleteButtonClick;
editor.ButtonsLeft.Add(btn);
return editor;
}
このコードでは、グリッドが各セルに対して新しいビットマップを作成するよう強制します。11000行あるため、グリッドは11000のビットマップを作成しようとして、OOM例外を引き起こしました。
解決策は.
private static void ConfigureDeleteColumnOn(UltraGridBand band)
{
band.Columns.Add(DELETE_BUTTON);
band.Columns[DELETE_BUTTON].ButtonDisplayStyle = ButtonDisplayStyle.Always;
band.Columns[DELETE_BUTTON].Style = ColumnStyle.Button;
band.Columns[DELETE_BUTTON].CellButtonAppearance.Image = Resources.Resources.delete;
}
関連
-
[解決済み] VB.NETで線を引く方法
-
[解決済み] .Netの配列のLongLengthの目的は何ですか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?
-
[解決済み] .NETでフォーマット文字列のブレース(中括弧)をエスケープする方法
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] .NETでGmailを使ったメール送信
-
[解決済み] .NETでapp.configやweb.configから設定を読み込む
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] Marginのプロパティ順
-
[解決済み] "ItemsSourceを使用する前に、Itemsコレクションを空にする必要があります。"
-
[解決済み] 24:00:00 を超える値を持つ .Net Timespan を格納するための正しい SQL タイプは何ですか?
-
[解決済み] .net の OOM 問題を解決する必要があります。
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] LINQクエリでToList()とToArray()のどちらを呼び出すのが良いですか?
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?