Как вы имитируете условия с низким объемом памяти под macOS? - PullRequest
0 голосов
/ 05 февраля 2019

При разработке и отладке приложений macOS существует ли способ имитации общесистемного события или уведомления о нехватке памяти?

Симулятор iOS имеет такую ​​функцию, но я не могу найти эквивалент в MacOS.

Мне интересно смоделировать ситуацию с нехваткой памяти, чтобы увидеть, как такие классы, как NSPurgeableData и IOSurface обрабатывают очистку.

(кроме написания простого приложения, которое просто продолжает выделять память ...)

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Инструмент для macOS предназначен для имитации условий с низким объемом памяти: memory_pressure (пример):

sudo memory_pressure -S -l critical

Приведенная выше команда имитирует (-S) давление памяти критического уровня (-l критическое значение).

ИМЯ
memory_pressure - Инструмент для применения реального или имитирующего давления памяти в системе.

ОПИСАНИЕ
memory_pressure [-l level] |[-p процент_бесплатно] |[-S -l level]

OPTIONS
-l Применять реальное или имитировать давление памяти (если оно указано рядом с аргументом имитации) в системе до тех пор, пока не будет уведомлено о недостаточном объеме памяти, соответствующемгенерируются.Поддерживаются следующие значения: «warn» и «критический».

 -p <percent_free> Allocate memory till the available memory in the system
 is <percent_free> of total memory. If the percentage of available memory
 to total memory on the system drops, the tool will free memory till
 either the desired percentage is achieved or it runs out of memory to
 free.

 -S Simulate memory pressure on the system by placing it artificially for
 <sleep_seconds> duration at the "warn" or "critical" level.

 -s <sleep_seconds> Duration to wait before allocating or freeing memory
 if applying real pressure. In case of simulating memory pressure, this is
 the duration the system will be maintained at an artifical memory level.

ОПИСАНИЕ
Инструмент для применения реального или имитирующего давления памяти в системе

СМОТРИ ТАКЖЕ
vm_stat (1)

0 голосов
/ 05 февраля 2019

Из кода вы можете использовать функцию setrlimit для управления потреблением системных ресурсов в вашем приложении.

В качестве альтернативы, ulimit позволяет контролировать ресурсы, запускаемые из Терминала

...