How to limit memory of a OS X program? ulimit -v neither -m are working

You can’t. Apple can (using the ledger() system call, which is private), but you can’t. I’m not entirely sure whether launchd’s options work or not – certainly if it was still using the code visible in the last open source version (from 10.9.5), it wouldn’t, because it calls setrlimit(), but it’s been substantially rewritten since then, though I can’t see it calling ledger(), which I’d expect it to if this was supposed to work.

Why? Because the RLIMIT_DATA and RLIMIT_AS options to setrlimit() don’t actually do anything in current versions of XNU (the macOS kernel).

Leave a Comment