Я использую профилировщики Java для проверки производительности GC - но это очень удачно.То, что я действительно хотел бы сделать, это вставить некоторые профилирование реального мира в мое приложение.Это очень легко для профилирования времени - то есть, отмечая время и вычитая, но я не могу найти какой-либо способ сделать это из памяти.
По сути - я хочу создать такую функцию:
ProfileResult profile( Runnable function)
, который возвращает мне информацию о распределении памяти - то есть, сколько объектов, сколько байтов было выделено - и сколько из этого может быть собрано мусором.
Что я хочу закончить, так это тесты в нашемСистема CI, которая в основном расстраивается из-за таких вещей, как функция, увеличивает нагрузку на память ... и это абсолютно правильно - они на самом деле знают, что эта новая функция выделяет на 200 байт больше, чем старая - это не просто случайный момент времени, когда всев других потоках может происходить что-то другое, или может происходить сборка мусора или что-то в этом роде.
Возможно ли это?Я знаю, что в JVM встроена функция профилирования - можно ли получить к ней доступ из программы, которая работает, или есть какой-то другой способ добиться того, чего я хочу?