Як збільшити MaxMetaspaceSize?

Основні варіанти:

  1. -XX:MetaspaceSize=[size] : початковий розмір Meta Space. JVM збільшить розмір, якщо потрібно, до максимального розміру.
  2. -XX:MaxMetaspaceSize=[розмір] : максимальний розмір метапростору. Цей параметр можна використовувати для обмеження обсягу власної пам’яті, яку можуть займати метадані класу.

MaxMetaspaceSize є за замовчуванням необмежений, тому в більшості випадків немає необхідності змінювати значення на інше.

Максимальний розмір купи Java контролюється – Опція Xmx. За замовчуванням цей параметр не вказано у файлі конфігурації Summary and Pruning Agent. Якщо цей параметр не вказано, стандартне значення, яке використовується Java, застосовується таким чином: половина доступної пам’яті з мінімумом 16 МБ і максимумом 512 МБ.

TL; DR: можуть бути причини для обмеження розміру метапростору, але вони, ймовірно, відрізняються від початкових причин для встановлення розмірів perm gen. Тому необхідно переоцінити потребу. Щоб висловити протилежну думку, можна зробити так, щоб ЗАВЖДИ встановлювати MaxMetaspaceSize.

Оскільки більше класів динамічно завантажується під час виконання програми на Java, метапростір заповнюється. JVM підтримує порогове значення для розміру вмісту метапростору, і коли певний розподіл не вписується в цей поріг, він запускає цикл збирання сміття Metadata GC Threshold.