6

最近、メモリの断片化に関するトピックを読みました:メモリの断片化 を解決する方法とメモリの断片化は何ですか?

これらの記事http://pavlovdotnet.wordpress.com/2007/11/10/memory-fragmentation/で、作成者などのメモリ割り当てマップを見たいです。

そのようなメモリ割り当てマップを取得するためのいくつかのツールをお勧めします。そうすれば、メモリが断片化されているかどうか、および使用可能な最大の空き領域はどれくらいかを確認できます。

私はWindowsを使用しているので、このシステムで動作するツールを好みます。

4

2 に答える 2

5

GC のメモリとヒープの使用状況を可視化するツールと、ソースコードが提供されています別の同様のアプリもコメントにリンクされています。

.NET ソリューションのメモリ使用量をプロファイリングできるようにする必要がある場合は、ANTS Memory Profilerを確認してください。Visual Studio のプロジェクトと一緒に実行し、プロセスとオブジェクトがメモリをどのように使用しているかを監視できます。

于 2012-06-04T18:05:49.420 に答える
2

問題には間接的な解決策があります。私は数年間サーバーアプリケーションを開発しています。最初はオンデマンドで割り当てを行っていたため、数週間実行した後、サーバーのパフォーマンスが低下しました。回避策として、次のアプローチに従いました -

実行時にヒープから割り当てる必要があるユーザー定義のクラス X、Y、Z、.. があるとします。起動時に n 個のオブジェクト X を割り当てます。これらすべてのオブジェクトをフリー プール リストに入れます。オンデマンドで x の各オブジェクトを取得し、アプリに提供します。使用中はビジープールリストに入れます。アプリがそれを解放したい場合は、フリー プール リストに戻します。Y.Zなどはこのスターテジーに従ってください。

起動時に必要なすべてのオブジェクトを割り当て、プログラムが終了するまで OS メモリ マネージャーに解放しないため、メモリの断片化によるパフォーマンスの低下に直面することはありません。

于 2012-06-05T17:56:13.617 に答える