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