У меня возникают проблемы с утечками памяти в JavaFX Scene Builder. Я подал отчет об ошибке, но тем временем моя система иногда становится невыносимо медленной, поскольку Scene Builder использует более 10 ГБ.
В качестве временного исправления я хочу ограничить объем памяти, который он может использовать. Я попытался установить следующее в SceneBuilder.cfg под JVMOptions:
-XX:InitialHeapSize=256m
-XX:MaxHeapSize=256m
-XX:MaxMetaspaceSize=256m
jps
подтверждает, что аргументы передаются процессу:
3052 -Djava.library.path=/opt/SceneBuilder/app:/opt/SceneBuilder -Djava.launcher.path=/opt/SceneBuilder -Dapp.preferences.id=com/oracle/javafx/scenebuilder/app -XX:InitialHeapSize=256m -XX:MaxHeapSize=256m -XX:MaxMetaspaceSize=256m
Тем не менее, процесс все еще растет в использовании памяти, превышая 256 МБ, быстро превышая 6 ГБ и более.
Так есть ли способ действительно ограничить объем памяти, используемый процессом Java?
Изменить: я попытался с помощью ulimit
:
ulimit -d 1024000 -v 1024000 -m 1024000
но тогда я получаю ошибку при попытке запуска:
Error occurred during initialization of VM
Could not allocate metaspace: 1073741824 bytes
что говорит о том, что Java действительно игнорирует параметр MetaspaceSize. Любой другой способ ограничить память в Java 8?