Estou tendo problemas com (o que parece ser) vazamentos de memória no JavaFX Scene Builder. Eu arquivei um relatório de bug, mas enquanto isso, meu sistema às vezes fica insuportavelmente lento, já que o Scene Builder usa 10 GB ou mais.
Como uma correção temporária, quero limitar a quantidade de memória que ele pode usar. Eu tentei definir o seguinte em SceneBuilder.cfg em JVMOptions:
-XX:InitialHeapSize=256m
-XX:MaxHeapSize=256m
-XX:MaxMetaspaceSize=256m
jps
confirma que os argumentos são passados para o processo:
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
No entanto, o processo ainda sobe no uso de memória, ultrapassando 256 MB, ultrapassando rapidamente 6 GB ou mais.
Então, existe uma maneira de realmente limitar a quantidade de memória usada por um processo Java?
Editar: tentei usar ulimit
:
ulimit -d 1024000 -v 1024000 -m 1024000
mas estou recebendo um erro ao tentar iniciar:
Error occurred during initialization of VM
Could not allocate metaspace: 1073741824 bytes
que sugere que o Java realmente ignora o parâmetro MetaspaceSize. Qualquer outra maneira de limitar a memória no Java 8?