проблема с командой “времени” GNU для измерения использования памяти

Это будет хорошо.

    Object[] parameters ={new Object()}; // lets say this object array is null
    Class clas = Class.forName("AClass");
    Object anObject = clas.newInstance();

    Object[] param ={parameters};

    Method someMethod = clas.getDeclaredMethod("someMethod", parameters.getClass());
    someMethod.invoke(anObject, param);

Будьте осторожны со вторым параметром метода invoke. Это сам Object [], и тип аргумента вашего метода тоже Object [].

6
задан Kirk Woll 1 May 2011 в 22:53
поделиться

2 ответа

Это правда, что время не поддерживает все расширенные функции.

Существуют альтернативы valgrind, такие как мэмпатрол и электрический забор, которые не имеют таких же накладных расходов (но имеют менее необычные функции). Valgrind на самом деле невероятно силен для этого, и вы платите за это во время выполнения.

Вы также можете посмотреть на использование сценариев systemtap для достижения аналогичных результатов.

top также очень полезно.

3
ответ дан 16 December 2019 в 21:45
поделиться

Насколько мне известно, пиковое использование памяти не реализовано в Linux, поэтому время не сообщает об этом. Большинство людей используют количество второстепенных ошибок страниц (1 == блок размером 4 Кбайт) как показатель объема используемой памяти.

См., Например, здесь , как Линус Торвальдс использует это для проверки производительности git.

Единственный способ, которым я мог бы это измерить в противном случае, - это использовать ulimit и использовать двоичный поиск, чтобы найти наименьший объем памяти, который ему нужен :)

5
ответ дан 16 December 2019 в 21:45
поделиться
Другие вопросы по тегам:

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