#spring-boot #docker #jvm #heap-memory
#spring-boot #docker #jvm #куча-память
Вопрос:
Я никогда не устанавливал размер кучи моего образа docker.
root@0f94b4ca1efb:/# java -XX: PrintFlagsFinal -version | grep HeapSize
size_t ErgoHeapSizeLimit = 0 {product} {default}
size_t HeapSizePerGCThread = 43620760 {product} {default}
size_t InitialHeapSize = 33554432 {product} {ergonomic}
size_t LargePageHeapSizeThreshold = 134217728 {product} {default}
size_t MaxHeapSize = 513802240 {product} {ergonomic}
uintx NonNMethodCodeHeapSize = 5825164 {pd product} {ergonomic}
uintx NonProfiledCodeHeapSize = 122916538 {pd product} {ergonomic}
uintx ProfiledCodeHeapSize = 122916538 {pd product} {ergonomic}
но я вижу, что на изображении максимальный размер кучи составляет 513M. Так что это как-то вычисляется. Как мне установить его самостоятельно, если я хочу его увеличить?
Я пытался это сделать
docker run -d --name devServer -e "SPRING_PROFILES_ACTIVE=dev" -e "JAVA_OPTS=-Xmx1g" -p 8080:8080 efd2e03a-8b5f-402a-8222-c8953e9f16aa /bin/bash
но это не имеет никакого эффекта
Комментарии:
1. Это может ответить на ваш вопрос: developers.redhat.com/blog/2017/03/14/java-inside-docker
2. Какую версию JDK вы используете? Если вы используете JDK> = 10, то ограничения памяти автоматически распознаются и применяются. docker.com/blog /…
Ответ №1:
JVM автоматически настраивает размер кучи в соответствии со спецификацией компьютера, на котором он запущен, подробности в статье ниже.
https://www.atamanroman.dev/articles/jvm-memory-settings-container-environment/