Пиковое использование памяти процесса linux/unix

Когда вы объединяете массив со строкой в ​​

    vaTest(s1 + " 1 ");

Тогда ссылка на массив преобразуется в строку

 [Ljava.lang.String;@2a139a55

Таким образом, метод vaTest получит [115 ]

[Ljava.lang.String;@2a139a55 1

в виде массива размером 1.

356
задан 2 revs, 2 users 80% 8 March 2019 в 08:12
поделиться

7 ответов

Вы можете использовать такой инструмент, как Valgrind , чтобы сделать это.

5
ответ дан 23 November 2019 в 00:21
поделиться

/ usr / bin / time, возможно, делает то, что вы хотите, на самом деле. Нечто подобное.

 /usr/bin/time --format='(%Xtext+%Ddata %Mmax)'

Подробнее см. Время (1) ...

18
ответ дан 23 November 2019 в 00:21
поделиться

Возможно (GNU) время (1) уже делает то, что вы хотите. Например:

$ /usr/bin/time -f "%P %M" command
43% 821248

Но другие инструменты профилирования могут дать более точные результаты в зависимости от того, что вы ищете.

31
ответ дан 23 November 2019 в 00:21
поделиться

[ Редактировать : Работает в Ubuntu 14.04: / usr / bin / time -v команда Убедитесь, что используется полный путь.]

Похоже, что / usr / bin / time действительно даст вам эту информацию, если вы передадите -v (это в Ubuntu 8.10). См., Например, Максимальный размер резидентного набора ниже:

$ /usr/bin/time -v ls /
....
        Command being timed: "ls /"
        User time (seconds): 0.00
        System time (seconds): 0.01
        Percent of CPU this job got: 250%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 0
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 315
        Voluntary context switches: 2
        Involuntary context switches: 0
        Swaps: 0
        File system inputs: 0
        File system outputs: 0
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0
376
ответ дан 23 November 2019 в 00:21
поделиться

Хорошо, если вы действительно хотите показать пик памяти и еще немного в Глубина статистики Я рекомендую использовать профилировщик, такой как valgrind . Хороший интерфейс Valgrind - это Alleyoop .

8
ответ дан 23 November 2019 в 00:21
поделиться

] Если процесс выполняется хотя бы пару секунд, то вы можете использовать следующий сценарий bash, который запустит данную командную строку, а затем распечатает в stderr пиковый RSS (замените rss любым другим атрибутом, который вы ' Вас интересует). Он несколько легкий, и у меня он работает с ps , включенным в Ubuntu 9.04 (чего я не могу сказать для времени ).

#!/usr/bin/env bash
"$@" & # Run the given command line in the background.
pid=$! peak=0
while true; do
  sleep 1
  sample="$(ps -o rss= $pid 2> /dev/null)" || break
  let peak='sample > peak ? sample : peak'
done
echo "Peak: $peak" 1>&2
16
ответ дан 23 November 2019 в 00:21
поделиться

(Это старый вопрос, на который уже дан ответ ... но для протокола :)

Я был вдохновлен сценарием Янга и придумал этот небольшой инструмент, названный memusg . Я просто увеличил частоту дискретизации до 0,1, чтобы обрабатывать очень короткие жизненные процессы. Вместо того, чтобы отслеживать отдельный процесс, я измерял rss-сумму группы процессов. (Да, я пишу множество отдельных программ, которые работают вместе) В настоящее время он работает в Mac OS X и Linux. Использование должно было быть похоже на использование времени :

memusg ls -alR / >/dev/null

Он показывает только пик на данный момент, но меня интересуют небольшие расширения для записи другой (приблизительной) статистики.

Хорошо иметь такой простой инструмент, чтобы просто взглянуть, прежде чем мы начнем серьезное профилирование.

94
ответ дан 23 November 2019 в 00:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: