Я ищу эмпирические доказательства в поддержку использования функции совместного использования данных класса Open J9 *1002*.Эта функция заявляет:
обеспечивает прозрачный и динамический обмен данными между несколькими виртуальными машинами Java (JVM), работающими на одном хосте, что уменьшает объем физической памяти, потребляемой каждым экземпляром JVM
Я использую docker compose для запуска 5 копий одного и того же приложения и локального сервера prometheus для мониторинга использования памяти во всех 5 JVM.
Я запускал с функцией обмена данными классавключен и отключен, а затем я смотрю на метрики.
- загруженные классы jvm
- jhem nonheap memory
- хранилище классов jvm
- jvm JIT кеш данных
- буферная память
, которые были открыты в приложении весенней загрузки через конечную точку привода Prometheus.
Моя интуиция сказала мне, что если какая-то памятьсопоставленный файл использовался для хранения классов. Я мог бы увидеть некоторое уменьшение объема хранилища классов и памяти без кучи.
Не то, чтобы мой тест былдовольно научный, но до сих пор я вижу обратное - когда я включаю эту функцию, обе эти метрики немного увеличиваются (предельные суммы, но вовсе не снижаются).
Где в действительности нужно искать, чтобы измеритьвлияние, которое имеет эта функция.На первый взгляд, мне кажется, что это должно оказать какое-то измеримое влияние, учитывая, что все 5 приложений идентичны, что заставляет меня чувствовать, что я измеряю неправильные вещи.