Тратить тысячи денег на коммерческое не хочу, нет таких денег.
У меня серверное приложение, которое нужно в продакшне отпрофилировать в часы пик и понять, куда процессорное время уходит.
Скачал visualvm, подключился (это отдельный квест, ну да ладно), но он какой-то максимально убогий. Основная претензия — он считает cpu по статусу потока в JVM. При этом этот статус RUNNING даже когда поток спит в native коде (к примеру netty), да даже когда он спит в NioSelector-е из стандартной библиотеки. То бишь у меня потоки типа http-nio-8080-Poller нагружены на 100%. А если просуммировать, то там все 2000% будут, хотя по факту в top-е в этом время нагрузка нулевая. При этом как вручную пометить, что эта функция CPU не потребляет, я не увидел.
Каких-то других способов профилировать не нашёл. Все покупают/воруют yourkit?