Использование кучи меньше, но свободной памяти меньше - PullRequest
0 голосов
/ 07 мая 2019

у меня 10 Гб оперативной памяти

Максимальная куча приложений: 8 ГБ

текущее использование кучи приложения: 3 ГБ

Свободная память: 188 МБ

              total        used        free      shared  buff/cache   available
Mem:           9993        9362         188           2         442         326
Swap:          4095         866        3229

Так что, если мы назначим Xmx на 8 ГБ. ОЗУ зарезервирует 8 ГБ для кучи приложений?

1 Ответ

0 голосов
/ 08 мая 2019

JVM зарезервирует 8 ГБ в своем виртуальном адресном пространстве для Java Heap. Обратите внимание, что существуют другие области памяти, используемые для стеков потоков, GC, кэша кода JIT, прямых буферов и т. Д., Поэтому ваш процесс Java может потреблять больше, чем -Xmx объем памяти.

Я не уверен, что вы получаете, когда говорите: «Использование кучи меньше, но свободной памяти меньше», но если вам интересно, почему свободная часть памяти не составляет ~ 2 ГБ или даже ~ 7 ГБ , тогда это может быть потому, что:

  • JVM требуется больше памяти, чем просто куча (как упоминалось ранее),
  • то, что вы указываете как «текущее использование кучи приложений», может вводить в заблуждение, и ГХ часто не возвращают неиспользуемую память в ОС (вы можете посмотреть на «общее использование памяти»)
  • Сама ОС и другие приложения тоже нуждаются в памяти
...