Я на Mac Mini с OS X 10.8.2. Я разработчик приложений, но в этом случае я создаю приложение на C ++, поэтому я не могу использовать Xcode для этого вопроса. Я хотел бы отследить, сколько памяти использует мое приложение, но я не хочу записывать его вручную. Как мне это сделать.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Я хочу записывать это весь день. Приложение будет работать весь день, чтобы я мог сравнивать пики в памяти. Я не против сторонних приложений, если они надежны. Благодарю.
Ответы:
Вы должны быть в состоянии сделать это, используя стандартную
ps
команду. Отman ps
:Единственное, что вам нужно, это PID вашего процесса. Итак, если ваше приложение называется myApp, вы можете получить PID следующим образом:
Который печатает список как это:
Первый столбец - это идентификатор процесса (PID). Теперь, если вы хотите автоматизировать это, вам нужно пропустить строку, содержащую команду grep, и сохранить вывод в переменной BASH:
awk
Часть делает команду печати только первое поле, то PID.Вы можете объединить все это в один слой, который каждую минуту будет экономить использование памяти вашего приложения, в файл с именем
memlog.txt
:while sleep 60
заставляет bash работать в бесконечном цикле, ожидая 60 сек между цикламиsleep 60
говорит ему подождать 60 секунд. Измените это значение, если оно требуется для более частого обновления.В результате получается файл (
memlog.txt
) с 4 столбцами: PID вашего приложения, размер резидентного набора, размер виртуальной памяти и процент памяти. Например:Это может быть легко расширено, чтобы включить использование процессора и время для каждого измерения. Например, чтобы включить время:
источник
`
просто чтобы сообщить BASH, что команда продолжается в следующей строке, используемой здесь для простоты чтения. Это должно работать, если вы просто копируете, вставляете его напрямую, не будет, если вы копируете его вручную. Вся вещь в одной строкеwhile(1); do date=$(date +%D" "%H:%M:%S); echo -n "$date : " >> memlog.txt; pid=$(ps x | grep myApp | grep -v grep | gawk '{print $1}') && ps xo pid,rss,vsz,%mem | grep "$pid" >> memlog.txt; sleep 60 ; done
. Что касается визуального, я бы просто взял значения и построил их.while(1); do date=$(date +%D" "%H:%M:%S); echo -n "$date : " >> memlog.txt; pid=$(ps x | grep Nightly | grep -v grep | gawk '{print $1}') && ps xo pid,rss,vsz,%mem | grep "$pid" >> memlog.txt; sleep 60 ; done
sudo chmod +x
чтобы сделать его исполняемым. Тогда ./memTesting.sh. Он по-прежнему выдает ошибку о том, что использует неизвестную команду.