Xcode を実行すると、特に Interface builder の実行が開始されることに気付きました。Mac osx 占有メモリが急速に増加しました。xcode だけでなく、他のアプリでも、しばらく実行するとメモリが過剰に占有されることがあります。私の Mac のメモリは 4GB でも、ツールを使用してメモリを解放する必要がある場合があります。私の開発中のMacアプリでこのケースが発生する理由と回避方法は何ですか?
コメント歓迎
Xcode を実行すると、特に Interface builder の実行が開始されることに気付きました。Mac osx 占有メモリが急速に増加しました。xcode だけでなく、他のアプリでも、しばらく実行するとメモリが過剰に占有されることがあります。私の Mac のメモリは 4GB でも、ツールを使用してメモリを解放する必要がある場合があります。私の開発中のMacアプリでこのケースが発生する理由と回避方法は何ですか?
コメント歓迎
Qtアプリケーションで似たような(おそらく同じではない)ことを経験しました。
私は多くのファイルを読み込んでチェックサムを計算していましたが、アプリケーションの「実際のメモリ」は安定した 50 MB にとどまりましたが、空きメモリは減少し続けました。しかし、「非アクティブなメモリ」の量は増え続けました。
何が起こっていたかというと、読み取ったすべてのファイルがディスク キャッシュに追加されていたということです。ディスクキャッシュによって消費されるメモリは、「非アクティブ」とマークされているように見えます。これは、Apple ( http://support.apple.com/kb/HT1342 )によると、「空き」メモリと同じように利用できるはずですが、停止しませんでした。 「空き」が 50 MB を下回ったときに OSX がスワップを開始しないようにしました。
Cで:
#include "fnctl.h"
fcntl(f.handle(),F_GLOBAL_NOCACHE,1);
そのファイル記述子のディスクキャッシュをバイパスすることで、それを修正するようです。
非アクティブなメモリを解放する (それが実際に問題である場合) は、「purge」コマンドを使用してコマンドラインから行うこともできます。