По умолчанию пакет сборки Java ограничивает различные области памяти JVM. Это делается для того, чтобы убедиться, что ваши Java-приложения не превышают лимит памяти контейнера, что может привести к сбою приложения.
Ваше приложение пытается создать объем прямой памяти, превышающий предел, установленный в сборочном пакете Java. Когда я пишу это, Java buildpack устанавливает -XX:MaxDirectMemorySize=10M
.
Чтобы это работало, вам просто нужно установить переменную окружения, либо в вашем manifest.yml, либо с помощью cf set-env
с именем JAVA_OPTS
, а содержимое должно включать -XX:MaxDirectMemorySize=XXM
, где XX
- большее значение что вы хотите использовать.
Java buildpack увидит, когда вы настроите параметры памяти, подобные этой, и уменьшит размер других областей памяти для компенсации. Если вы пытаетесь использовать большой объем прямой памяти, это может привести к тому, что вам не хватит памяти для других регионов. Если это произойдет, вам потребуется увеличить общий лимит памяти для вашего приложения.
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/jre-open_jdk_jre.md#java-options
Надеюсь, это поможет!