Это будет хорошо.
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 [].
Это правда, что время не поддерживает все расширенные функции.
Существуют альтернативы valgrind, такие как мэмпатрол и электрический забор, которые не имеют таких же накладных расходов (но имеют менее необычные функции). Valgrind на самом деле невероятно силен для этого, и вы платите за это во время выполнения.
Вы также можете посмотреть на использование сценариев systemtap для достижения аналогичных результатов.
top также очень полезно.
Насколько мне известно, пиковое использование памяти не реализовано в Linux, поэтому время не сообщает об этом. Большинство людей используют количество второстепенных ошибок страниц (1 == блок размером 4 Кбайт) как показатель объема используемой памяти.
См., Например, здесь , как Линус Торвальдс использует это для проверки производительности git.
Единственный способ, которым я мог бы это измерить в противном случае, - это использовать ulimit и использовать двоичный поиск, чтобы найти наименьший объем памяти, который ему нужен :)