JEP 240: Remove the JVM TI hprof Agent
Удаление агента hprof для JVM TI
| Ответственный | Staffan Larsen |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Delivered |
| Выпуск | 9 |
| Компонент | core-svc / tools |
| Обсуждение | serviceability dash dev at openjdk dot java dot net |
| Трудоёмкость | XS |
| Длительность | XS |
| Рецензенты | Mikael Vidstedt |
| Одобрен | Mikael Vidstedt |
| Создан | 2014/06/12 05:55 |
| Обновлён | 2016/06/07 23:48 |
| Задача | 8046661 |
Аннотация
Удалить агент hprof из JDK.
Что не является целью
Возможность создавать дампы кучи в формате hprof сохранится.
Мотивация
Полезные функции агента hprof заменены лучшими альтернативами.
Дампы кучи (heap=dump)
Эта функциональность заменена такой же функциональностью в самой JVM. С помощью диагностической команды GC.heap_dump (jcmd <pid> GC.heap_dump) можно запросить у JVM дамп кучи в формате файла hprof (это также доступно через jmap -dump).
Профилировщик выделения памяти (heap=sites)
Такую же функциональность предоставляет инструмент Java VisualVM, а также ряд сторонних профилировщиков.
Профилировщик CPU (cpu=samples, cpu=times)
У профилировщика CPU есть несколько недостатков, которые довольно подробно описаны в http://www.brendangregg.com/blog/2014-06-09/java-cpu-sampling-using-hprof.html и в других источниках. Есть другие инструменты, которые предоставляют лучшую функциональность и имеют меньше проблем. Среди них Java VisualVM и Java Flight Recorder, входящие в состав JDK, а также ряд сторонних профилировщиков.
Демонстрационный код
Агент hprof был написан как демонстрационный код для JVM Tool Interface и не предназначался для использования в качестве рабочего инструмента. Код и документация содержат ряд утверждений следующего вида:
Это демонстрационный код для интерфейса JVM TI и использования BCI, он не является официальным продуктом или формальной частью JDK.
Описание
Прекратить собирать и поставлять библиотеку агента hprof (libhprof.so) в составе JDK.
Перенести код в отдельный проект в рамках OpenJDK. Этот код по-прежнему ценен как демонстрация возможностей JVM TI, но не соответствует требованиям к поставляемому продукту.
Это изменение должно быть задокументировано в соответствующих примечаниях к выпуску. Учитывая обширные оговорки, уже присутствующие в документации, пользователей не должно удивить удаление hprof, но документацию следует обновить, чтобы она указывала на альтернативные инструменты.
Тестирование
Существующие тесты агента hprof нужно будет удалить.