Sbt, "java.lang.OutOfMemoryError: пространство кучи Java"

Я пытаюсь воспроизвести программу openie4.0: https://github.com/knowitall/openie

Окружающая среда Убунту: 18.04, Скала: 2.10.2, Ява: 1.7.0_80, сбт: 0.13.18,

Мне удалось добраться до шага «бег с sbt:» ''' sbt 'run-main edu.knowitall.openie.OpenIECli' '''

Однако я продолжал сталкиваться с проблемой

java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space

когда я приступаю к созданию автономной банки при использовании:

sbt clean compile assembly

при попытке "sbt -J-Xmx2700M чистая сборка компиляции" (или больше, скажем, 10 г, у меня на компьютере 64 г) Вышеупомянутая проблема с памятью продолжается плюс:

java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
[error] Not a valid command: J-Xmx10g
[error] Not a valid project ID: J-Xmx10g
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: J-Xmx10g
[error] J-Xmx10g
[error]     

Это очень сбивает с толку, почему эта команда недействительна, и я не нашел для этого решения.

Позже я попытался установить универсальный JAVA_OPTS, но это не сработало. Затем я принимаю предложения от пользователя 972946 (последний), который предлагает его переопределить, поскольку настройки по умолчанию. Как установить размер кучи для sbt?.

Затем попробуйте после исправления, как он предложил, но все равно .....

env JAVA_OPTS = "-Xmx41200m" sbt clean compile assembly

Я также принял предложение Майка и Кассио по приведенной выше ссылке... совсем не работает.

Очень ценю любые предложения по этому поводу.

Большое спасибо. Гц

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно Баелдунг:

Попробуйте экспортировать эту переменную среды перед ее запуском:

export SBT_OPTS = "-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=10G -Xmx10G -Xms10G"

В качестве альтернативы SBT позволяет нам указать параметры JVM в файле с именем .jvmopts. создайте файл с именем .jvmopts в корне вашего проекта и поместите его внутрь:

-Xms1g
-Xmx4g
Ответ принят как подходящий

Если вы посмотрите на следующую строку:

[error] Not a valid command: J-Xmx10g

Ваш sbt не может разрешить это как допустимый вариант, это может быть выдано, поскольку вы используете java 7 (убедитесь, что java7 принимает -Xmx$size в качестве допустимого аргумента), то же самое касается sbt 0.13 (который довольно старый). также должен быть файл или что-то, связанное с развертыванием (руководство, файл CI/CD или что-то еще), из которого вы можете получить помощь по запуску проекта. (если вы используете java 8, все должно быть в порядке)

Аминмал, спасибо за ответ. Наконец, я обнаружил, что это связано с тем, что локальные настройки sbt настраиваются в процессе установки ... поэтому я возвращаюсь к этому файлу и изменяю конфигурацию.

hz2021 03.04.2022 17:01

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