Привет.
Удивило решение для профилирования JVM приложений - https://perforator.tech/docs/en/guides/jvm.
Использование -XX:+PreserveFramePointer не кажется удачным решением.
Стандартом профилирования JVM является Java Flight Recorder (JFR):
https://docs.oracle.com/en/java/java-components/jdk-mission-control/9/user-guide/using-jdk-flight-recorder.html#GUID-D38849B6-61C7-4ED6-A395-EA4BC32A9FD6
https://dev.java/learn/jvm/jfr/
JFR очень гибкий и настраиваемый, собирает много событий JVM. Можно без проблем строить flame-графы, если есть парсер JFR.
Если JVM рассматривают просто как процесс, то используют async prifiler - https://github.com/async-profiler/async-profiler.
Однако JFR нативно поддерживется начиная с Java 11 и его использование приоритетное.
Аналогичный продукт у Grafana - Pyroscope, для непрерывного профилирования JVM-приложений использует JFR -
https://grafana.com/docs/pyroscope/latest/configure-client/language-sdks/java/
perforator на C++ написан, если я правильно понимаю. Я мог бы законтрибьютить использование JFR, если бы можно было это реализовать на Java или Go, C++ на таком уровне не владею к сожалению.
Привет.
Удивило решение для профилирования JVM приложений - https://perforator.tech/docs/en/guides/jvm.
Использование
-XX:+PreserveFramePointerне кажется удачным решением.Стандартом профилирования JVM является Java Flight Recorder (JFR):
https://docs.oracle.com/en/java/java-components/jdk-mission-control/9/user-guide/using-jdk-flight-recorder.html#GUID-D38849B6-61C7-4ED6-A395-EA4BC32A9FD6
https://dev.java/learn/jvm/jfr/
JFR очень гибкий и настраиваемый, собирает много событий JVM. Можно без проблем строить flame-графы, если есть парсер JFR.
Если JVM рассматривают просто как процесс, то используют async prifiler - https://github.com/async-profiler/async-profiler.
Однако JFR нативно поддерживется начиная с Java 11 и его использование приоритетное.
Аналогичный продукт у Grafana - Pyroscope, для непрерывного профилирования JVM-приложений использует JFR -
https://grafana.com/docs/pyroscope/latest/configure-client/language-sdks/java/
perforator на C++ написан, если я правильно понимаю. Я мог бы законтрибьютить использование JFR, если бы можно было это реализовать на Java или Go, C++ на таком уровне не владею к сожалению.