2012-05-05 26 views
0

アプリケーションでGDIフォントやブラシリークが発生しました。私のソースコード内に作成された(そして破棄された)オブジェクトを見つける方法はありますか?GDI +オブジェクトリーク(フォント、ブラシ)

私はtoHFontコールを持っておらず、Graphicsへのすべてのアクセスはusingステートメントでカプセル化されています。私はGDIViewや.NET Memory Profilerのようなツールからそのブラシとフォントを知っていますが、ソースコードでリークしたオブジェクトがどこに作成されたのかは言いません。

私はVS2008、.NET 3.5でC#を使用しています。

+0

これはコードレビューでどのように見つけられないのでしょうか。確かにあなたのコードの特定の場所でのみそれらを使用しますか? GDIViewと.NET MPがこのバーを満たしていない場合は、実際のメモリプロファイラが必要になります。リアル=お金。 –

+0

私は 'Graphics'でフォントを使い、コントロールにフォントを割り当てます。ブラシは 'Graphics'の中で使われます。私はまた、それらがしばしば静的変数であるようにそれらを再利用しようとするので、私は漏れの点を得ることはありません。 – ZoolWay

+0

静的変数は意図的なリークです。これは永久にブラシオブジェクトへの参照を保持します。これを行う上で実際のポイントはありません、ブラシオブジェクトを作成することは非常に安く、マイクロ秒かかる。 –

答えて

0

フォントとブラシをUsing/End Usingブロックにラップすることをお勧めします。

+0

私はいくつかのブラシとフォントを何度も何度も使用していますので、静的変数に変換されるので、生成頻度が少なくなり、再利用されやすくなります。だから私はusing-blocks(私はIDisposableを実装するすべてのリソースで何をしようとしている)にそれらを入れることはできません。 – ZoolWay