OS X プログラムのメモリを制限するにはどうすればいいですか? ulimit -v も -m も機能しません 質問する

OS X プログラムのメモリを制限するにはどうすればいいですか? ulimit -v も -m も機能しません 質問する

私のプログラムは、実行時間の半分くらいでメモリ不足になります。Linux では、ulimit -v mem-in-kbytes を使用して、使用可能なメモリにハード制限を設定できます。実際、私は ulimit -S -v mem-in-kbytes を使用して、プログラムで適切なメモリ割り当ての問題を検出し、中止することができます。

しかし... ulimit は OSX 10.6 では動作しません。 -s および -m オプションを試してみましたが、動作しません。

2008年にも同じ問題について議論がありました。マックルーマーズしかし、誰も良い代替案を提案しませんでした。プログラムがメモリを過剰に消費していることを学習したり、OS を通じて制限を設定したりできる方法が必要です。

ベストアンサー1

できません。Apple は (ledger()非公開のシステム コールを使用して) できますが、あなたにはできません。launchd のオプションが機能するかどうかは完全にはわかりません。確かに、最後のオープン ソース バージョン (10.9.5 以降) で表示されるコードをまだ使用していた場合は、 を呼び出すため機能しませんsetrlimit()が、それ以降大幅に書き換えられています。ただし、 を呼び出すことは見られませんledger()。これが機能するはずであれば、 を呼び出すはずです。

なぜでしょうか?RLIMIT_DATARLIMIT_ASオプションはsetrlimit()実際にはするXNU (macOS カーネル) の現在のバージョンに含まれるもの。

おすすめ記事