1

Solaris 10 では、奇妙な動作をするマルチスレッド プロセスがあります。複雑な C++ 構造 (RWTVal または RWPtr) を管理します。これらの構造は、(Pro*C を使用して) データベースに格納されたデータから構築されます。プロセスは 1 時間ごとにデータベースで新しい情報を探し、メモリ上に新しい構造を構築し、古いデータを解放します。ただし、この手順を繰り返すたびに、プロセスのメモリ使用量が数 MB (12/16MB) 増加します。プロセスのメモリ使用量は、100M から 1.4G 近くまでです。この時点まで、プロセスにメモリ リークがあるようです。しかし、奇妙な動作は、この時点以降、プロセスが停止して成長を続けることです。(Purify ツールを使用して) メモリ リークを探そうとすると、プロセスは成長せず、重大なリークは示されませんでした。誰かが同様の動作を見つけた、または何が起こっているのか説明できますか?

4

1 に答える 1

1

OS がメモリを解放するときに、古いメモリ ページを実際に「破棄」しない可能性があります。これは、OS がより多くのページを割り当てる必要がない場合、アプリケーションがより多くのメモリを割り当てる方が速くなるためです。ただし、もちろん限界まで。

于 2013-10-30T06:58:00.260 に答える