Когда вы объединяете массив со строкой в
vaTest(s1 + " 1 ");
Тогда ссылка на массив преобразуется в строку
[Ljava.lang.String;@2a139a55
Таким образом, метод vaTest получит [115 ]
[Ljava.lang.String;@2a139a55 1
в виде массива размером 1.
Вы можете использовать такой инструмент, как Valgrind , чтобы сделать это.
/ usr / bin / time, возможно, делает то, что вы хотите, на самом деле. Нечто подобное.
/usr/bin/time --format='(%Xtext+%Ddata %Mmax)'
Подробнее см. Время (1) ...
Возможно (GNU) время (1) уже делает то, что вы хотите. Например:
$ /usr/bin/time -f "%P %M" command
43% 821248
Но другие инструменты профилирования могут дать более точные результаты в зависимости от того, что вы ищете.
[ Редактировать : Работает в 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
Хорошо, если вы действительно хотите показать пик памяти и еще немного в Глубина статистики Я рекомендую использовать профилировщик, такой как valgrind . Хороший интерфейс Valgrind - это Alleyoop .
] Если процесс выполняется хотя бы пару секунд, то вы можете использовать следующий сценарий 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
(Это старый вопрос, на который уже дан ответ ... но для протокола :)
Я был вдохновлен сценарием Янга и придумал этот небольшой инструмент, названный memusg . Я просто увеличил частоту дискретизации до 0,1, чтобы обрабатывать очень короткие жизненные процессы. Вместо того, чтобы отслеживать отдельный процесс, я измерял rss-сумму группы процессов. (Да, я пишу множество отдельных программ, которые работают вместе) В настоящее время он работает в Mac OS X и Linux. Использование должно было быть похоже на использование времени
:
memusg ls -alR / >/dev/null
Он показывает только пик на данный момент, но меня интересуют небольшие расширения для записи другой (приблизительной) статистики.
Хорошо иметь такой простой инструмент, чтобы просто взглянуть, прежде чем мы начнем серьезное профилирование.