Как профилировать Native JNI-библиотеку

Как я могу профилировать базовую библиотеку интерфейса Java, написанную на C?

Я знаю о обычных C-профиляторах, но мой вопрос заключается в том, как я могу профилировать набор  ***целый*** , включая вызовы методов JVM, которые могут замедлять работу программы.

После некоторых исследований и тестирования с некоторыми из предложенных здесь методов я закончил использование  `sprof` .

В основном я выполнил следующие инструкции . Некоторые комментарии:

1. I had to leave `LD_PROFILE_OUTPUT` empty in order to get the result in `/var/tmp/`, otherwise the output file was not generated.
2. I assigned `LD_PROFILE=libXXXX.so`

Чтобы получить профиль, я запустил код Java, который загружает и использует собственную библиотеку JNI, и я получил файл с результатами профилирования:

<Код> /var/tmp/libXXXX.so.profile 

После того, как у вас есть файл, вы можете прочитать его с помощью команды:

 `sprof /path/to/libXXXX.so /var/tmp/libXXXX.so.profile` 

Результаты профилирования соответствуют тому же шаблону, что и  `gprof` .  [Здесь](http://www.cs.utah.edu/dept/old/texinfo/as/gprof_toc.html)  вы можете найти описание содержимого и их значение.