VB.Net で記述された大規模で複雑な Windows フォーム アプリがあります。ユーザーはいくつかのメモリの問題を経験しており、JetBrains dotTrace Profiler を使用してこれらのいくつかを解決しようとしています。
私のオブジェクトのいくつかを開いたままにしているものがまだあります。Generic.List
私は 'Customer' オブジェクトを持っていInvoiceLineItem
ます。このアイテムは基本的に、データを表示するための読み取り専用プロパティをロードするグリッド コントロール (ConponentOne FlexGrid) にバインドされたオブジェクトです。次に例を示します。
Public Class InvoiceLineItem
Private _customer as Customer
Private _charge as Charge
Sub New(Customer as Customer, Charge as Charge)
_customer = Customer
_charge = Charge
End Sub
Public ReadOnly Property Name as String
Return _customer.Name
End Property
Public ReadOnly Property ItemName as String
Return _charge.Name
End Property
Public ReadOnly Property Amount as Decimal
Return _charge.Amount
End Property
End Class
等
このオブジェクトは FlexGrid から解放されないようです。
Flexgrid は子フォーム上にあり、メイン フォームから表示されます。子フォームが閉じられると、メモリ プロファイラーはフォームがまだ参照されていることを示しています。dotTrace で [最短パス] をクリックすると、以下のパスが表示されます。
これは、カスタマーでルート パスを持つ唯一のオブジェクトのようです。
このフォームでは、オブジェクトまたはコレクション間でカスタム イベント処理が行われておらず、何も破棄されていません。
これをさらにトラブルシューティングするにはどうすればよいですか?