debugging - 原因 増加 bytes private プライベートバイト、仮想バイト、ワーキングセットとは何ですか?




2 Answers

perfmon、タスクマネージャ、またはそのようなツールを使用してメモリリークを判断しないでください。 彼らは傾向を特定するのには適しているが、他にはそれほど多くはない。 絶対的な言葉で報告する数字はあまりにも漠然としていて集計されているため、メモリリーク検出などの特定のタスクに役立ちます。

この質問への以前の返答は、さまざまな種類が何であるかについての大きな説明を与えました。

あなたはツールの推奨について尋ねる:私はメモリバリデータをお勧めします。 数十億のメモリ割り当てを行うアプリケーションの監視が可能です。

http://www.softwareverify.com/cpp/memory/index.html

免責事項:私はMemory Validatorを設計しました。

windows 仮想 メモリ 使用 率

perfmon windowsユーティリティを使用してプロセス内のメモリリークをデバッグしようとしています。

perfmonが以下のように説明します。

ワーキングセットは、このプロセスのワーキングセットの現在のサイズ(バイト単位)です。 ワーキングセットは、プロセス中のスレッドによって最近触れられたメモリページのセットです。 コンピュータの空きメモリがしきい値を超えている場合、ページは使用されていなくてもプロセスのワーキングセットに残ります。 空きメモリがしきい値を下回ると、ワーキングセットからページが切り取られます。 必要な場合は、メインメモリを離れる前に、ワーキングセットにソフトフォールトされます。

仮想バイトは、プロセスが使用している仮想アドレス空間の現在のサイズ(バイト単位)です。 仮想アドレス空間の使用は、ディスクまたはメインメモリページの対応する使用を必ずしも意味しない。 仮想空間は有限であり、プロセスはライブラリをロードする機能を制限する可能性があります。

Private Bytesは、他のプロセスと共有できない、このプロセスが割り当てたメモリの現在のサイズ(バイト単位)です。

これらは私が持っている質問です:

それはプライベートバイトなのですか?プロセスが漏洩しているかどうかを確かめるために測定する必要があります。なぜなら、起こった場合には、プロセス自体から漏れが発生するからです。

プロセスによって消費された合計メモリはいくらですか? それはVirtual Bytesですか、それともVirtual BytesとWorking Setの合計ですか?

プライベートバイト、ワーキングセット、バーチャルバイトの間には何らかの関係がありますか?

メモリ使用量のより良いアイデアを提供する他のツールはありますか?




ここで興味深い議論があります: http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/307d658a-f677-40f2-bdef-e6352b0bfe9e/ : http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/307d658a-f677-40f2-bdef-e6352b0bfe9e/このスレッドの私の理解は、小さな割り当てを解放することですプライベートバイトまたはワーキングセットに反映されません。

ロングストーリーショート:

私が電話したら

p=malloc(1000);
free(p);

プライベートバイトは割り当てだけを反映し、割り当てを反映しません。

私が電話したら

p=malloc(>512k);
free(p);

プライベートバイトは割り当てと解放を正しく反映します。




Related