Как профилировать выполнение развертывания OSGi?

Я начинаю разработку пакета OSGi для приложения, которое будет развернуто на устройстве с некоторыми аппаратными ограничениями. Я хотел бы знать, как я могу профилировать выполнение этого пакета, чтобы всегда быть уверенным, что он будет соответствовать его зависимостям в конечном устройстве. Было бы неплохо иметь профилировщик, чтобы знать, сколько памяти использует каждый пакет, локализовать узкие места и сравнивать различные реализации одного и того же сервиса.

Есть ли какой-либо профилировщик для развертываний OSGi или я должен использовать общий профилировщик Java?

Для разработки я использую Pax runner с Apache felix для запуска пакета и maven для управления проектными зависимостями и сборкой.

1 ответ

Решение

Моя компания разрабатывает приложения OSGi для встраиваемых устройств. К сожалению, я не знаю ни одного инструмента, который обладает всеми возможностями, которые вы ищете. Я могу рассказать вам, что мы делаем для решения тех вопросов, которые вы ищете.

1) Установка на устройстве: мы разрабатываем в Eclipse и разворачиваем с использованием Equinox. Мы строим с использованием файлов.product в Eclipse. Делая это, мы получаем четкое представление о количестве места на диске / в ПЗУ, которое наша программа займет на устройстве.

2) Для профилирования мы обычно используем YourKit. Есть и другие хорошие профилировщики Java, но мы обнаружили, что этот работает хорошо для нас.

Хорошая техника, которую вы можете сделать, - это создать версию сервисов, которая действует как прокси для реального сервиса. Прокси-сервер является отличным местом для вставки временного кода, так что вы можете подсчитать, сколько вызовов было сделано для каждого метода службы и определить время для каждого вызова. Вы также можете классифицировать временные интервалы на основе аргументов таким образом, чтобы найти неэффективные граничные случаи. Затем, когда вы будете готовы к развертыванию, вы можете удалить прокси.

Удачи.

Другие вопросы по тегам