JVM имеет прямые байтовые буферы, которые находятся на объектах кучи, которые проксируют память вне кучи.ByteBuffer составляет десятки байтов, даже если объем оперативной памяти составляет 1 ГБ.Когда GC очищает этот прокси-объект, потому что на него больше нет ссылок, память вне кучи также освобождается.
Если память вне кучи не освобождается, это потому, что;
- это на куче прокси сохраняются.т. е. требуется память.
- ElasticSearch выделяет память вне кучи напрямую, а библиотека имеет утечку (маловероятно),
-XX:MaxDirectMemorySize=64g
или что вы можете сэкономить.