私が仕事のために書いているプログラムは、それ自体が使用するメモリを追跡する必要があります。しかし、全体としてのメモリ使用量を監視することはできません。プログラム内の各オブジェクトと、そのオブジェクトが使用しているメモリ量を監視する必要があります。そのようにして、上記を使用している場合、メモリ使用量を削減するようにオブジェクトに指示できます。ある程度の容量。メモリ使用量を監視する部分は、作成されたすべてのオブジェクトへのポインタを保持し、オブジェクトのサイズを返すそのオブジェクトのメソッドを呼び出すことによって、それらのメモリ使用量を追跡します。
私が抱えている問題は、使用されているメモリのサイズを正確に計算できないことです。私の計算が少しずれていても問題ありませんが、大きな違いが得られています。私のプログラムが計算するサイズは、(プログラムが実行するアクションに応じて) プログラムの実際のメモリ使用量の 1/2 から 2/3 の間で異なります。たとえば、3.35 GB の RAM を使用するプログラムは、2.16 GB しか使用しないと計算されました。
オブジェクトのサイズを計算する現在の方法は、オブジェクト内のベクトルまたは配列の長さに sizeof(*this) を追加し、ベクトル/配列内の要素のサイズを掛けたものです。
使用メモリの計算方法に何か問題がありますか? それとも、私が考慮していない何か他のものがありますか? プログラムのさまざまな側面でメモリ使用量を分析できるプログラムを誰かが知っている場合、それは非常に役立ちます。そうすれば、この余分なメモリがどこから来ているのかを追跡できます(できれば、GUIなしでLinuxで実行できるもの私はUbuntuサーバーを使用していますが、使用できるWindowsマシンもあります)。