Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Зачем итерироваться по Set-у через toArray(), когда Set сам по себе Iterable? Он может меняться во время исполнения?
Как я понял, стартовый таймстамп сохраняется в статической переменной? Даже если забыть про вопрос многопоточности, если внутри одного класса один инструментированный метод вызывает другой, результат замера внешнего метода будет неправильным.
import ru.ltm.agent.jmx.ClassesMetricsProfiler;
public class RFDataBasesP1S1 extends EXEBaseStep {
public static final ClassesMetricsProfiler metricsProfiler = new ClassesMetricsProfiler();
public static long __metricStartTime = System.currentTimeMillis();
public Object processStep(Object pObject) {
try {
__metricStartTime = System.currentTimeMillis();
} catch (Exception exception) {
throw exception;
} finally {
Object object = null;
metricsProfiler.mark2("com.ssaglobal.scm.wms.service.drfmanagement.RFDataBasesP1S1.processStep", System.currentTimeMillis() - __metricStartTime);
}
return context;
}
}
for (Settings settingObj : methodsToInstrument) {
...
}
Сбор метрик с «чужого» класса, с помощью jmx и javaassist в виде javaagent