Как ограничить память программ OS X? ulimit -v ни -m работают
У моих программ заканчивается память наполовину, когда я их запускаю. В Linux я могу установить жесткий предел доступной памяти с помощью ulimit -v mem-in-kbytes. Фактически, я использую ulimit -S -v mem-in-kbytes, поэтому я получаю правильную проблему с распределением памяти в программе, и я могу прервать ее.
Но … ulimit не работает в OSX 10.6. Я пробовал с параметрами -s и -m, и они не работают.
В 2008 году в MacRumors была обсуждена одна и та же проблема, но никто не предложил хорошую альтернативу. Это должно быть способом, которым программа может научиться тратить слишком много памяти или устанавливать ограничение через ОС.
- Вызов виртуальной функции из деструктора
- Виртуальный / чистый виртуальный пояс C ++
- Доступ к членам classа по указателю NULL
- CRTP, чтобы избежать динамического polymorphismа
- Зачем использовать «virtual» для свойств classа в определениях модели Entity Framework?
- C ++. Какова цель литья в пустоту?
- sizeof class с int, функцией, виртуальной функцией в C ++?
- Почему виртуальная функция скрывается?
- Требуется ли в режиме Virtual PC XP меры безопасности?
- WAMPServer, сервер доступа с мобильного телефона
- Как реализовать виртуальные статические свойства?
- Виртуальная функция C ++ из конструктора
После того, как я боролся с этим сам (с ограниченным успехом), я решил, что есть два способа сделать это …
Вы можете настроить элемент launchd для своего исполняемого файла. Важной частью plist является раздел, такой как ..
SoftResourceLimits Stack 10000000000
Доступны различные ключи … которые можно найти на странице MAN от MAN .
Другой способ сделать это, я думаю , установить значение в /etc/launchd.conf (system) или /etc/launchd-usr.conf (peruser). Например, ваш файл launchd.conf может содержать …
umask 002 limit stack 67104768 67104768 limit maxproc 3400 4500 limit maxfiles 256 unlimited setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Документация по всем функциональным возможностям launchdd, если вы спросите меня .. Это как если бы Apple, возможно, не заботятся / хотят, чтобы люди за пределами своих стен действительно понимали, как все это работает. Существует так много возможностей, освоившись с запуском, и это тонкости … но есть немного конкретных / официальных ресурсов, чтобы как правильно их реализовать.
setrlimit
должен выполнить эту работу. Я считаю, что это BSD эквивалент ulimit
…