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

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

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

0
nl ja de
Какая платформа ОС? Если вы можете запускать OS-X или Solaris, dtrace может обеспечить интегрированное представление, профилирование через JVM, пространство пользователя ОС и в ядро.
добавлено автор Tim B, источник
dtrace не является профилировщиком памяти, если это то, на что была направлена ​​вторая половина вашего комментария.
добавлено автор Tim B, источник
Кажется, Oracle делает его доступным для Linux сейчас, хотя, поскольку он исходит из Oracle, я понятия не имею о терминах: blogs.oracle.com/linux/entry/…
добавлено автор Tim B, источник
Вы упомянули, что знаете о «обычных профайлерах C» - это включает OProfile? ( oprofile.sourceforge.net ). Я получил полезные результаты при использовании этого для профилирования нескольких разных компонентов, работающих вместе системы Linux.
добавлено автор Multimedia Mike, источник
В настоящее время GNU/Linux. Также, чтобы указать, что я говорю о производительности с точки зрения процессора. Не проблемы с памятью.
добавлено автор mcieec, источник
Нет нет. Это было просто для уточнения моего первоначального вопроса. Я посмотрю, смогу ли я где-нибудь найти dtrace, но давайте посмотрим, есть ли другой способ. Благодаря!
добавлено автор mcieec, источник
Нет, я не рассматривал OProfile, но спасибо за указание на это! Я действительно просмотрел его, но, наконец, я закончил использование sprof .
добавлено автор mcieec, источник

1 ответы

После некоторых исследований и тестирования с некоторыми из предложенных здесь методов я закончил использование 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 . Здесь вы можете найти описание содержимого и их значение.

4
добавлено
Эй, могу я спросить вас больше об этом? Вы запустили javacode из командной строки, где вы экспортировали все переменные, или вы сделали это из eclipse?
добавлено автор Aksim Elnik, источник
Я столкнулся с Несоответствием, обнаруженным ld.so: dl-open.c: 717: _dl_open: Assertion '_dl_debug_initialize (0, args.nsid) -> r_state == RT_CONSISTENT' failed! , который я не могу разрешить...
добавлено автор Aksim Elnik, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async