Настройка JVM MetaSpace

Если я читаю на сайте Oracle, они утверждают:

Объем собственной памяти, которую можно использовать для метаданных класса, по умолчанию не ограничен.

Но они также пишут здесь, что:

MetaSpace выделяется из тех же адресных пространств, что и куча Java. Уменьшение размера кучи Java сделает больше места доступным для MetaSpace. Это только правильный компромисс, если в куче Java имеется избыток свободного места.

Последнее предложение кажется неясным - я так понимаю, что не хватает свободной системной памяти, тогда уменьшение размера кучи может сделать больше доступным для MetaSpace(?)

Исходя из этого предположения, что ограничения размера кучи и MetaSpace независимы, за исключением того, что они оба должны вписываться в память, тогда общее использование памяти будет чем-то вроде

куча + метапространство + потоки * размер стека + другие биты

И установка ограничения на общее использование памяти также включает в себя установку ограничения MetaSpace. Я понимаю, что это будет меняться, например, чем больше, тем лучше, если кодовая база велика с большим количеством классов и что не может быть окончательного ответа без профилирования.

но каков будет первоначальный ориентир - 10% кучи?

0 ответов

Другие вопросы по тегам