JVM зарезервирует 8 ГБ в своем виртуальном адресном пространстве для Java Heap.
Обратите внимание, что существуют другие области памяти, используемые для стеков потоков, GC, кэша кода JIT, прямых буферов и т. Д., Поэтому ваш процесс Java может потреблять больше, чем -Xmx
объем памяти.
Я не уверен, что вы получаете, когда говорите: «Использование кучи меньше, но свободной памяти меньше», но если вам интересно, почему свободная часть памяти не составляет ~ 2 ГБ или даже ~ 7 ГБ ,
тогда это может быть потому, что:
- JVM требуется больше памяти, чем просто куча (как упоминалось ранее),
- то, что вы указываете как «текущее использование кучи приложений», может вводить в заблуждение, и ГХ часто не возвращают неиспользуемую память в ОС (вы можете посмотреть на «общее использование памяти»)
- Сама ОС и другие приложения тоже нуждаются в памяти