Java 8 uygulamasının bellek kullanımını sınırlama (SceneBuilder)


0

JavaFX Sahne Oluşturucu'da bellek sızıntısı (göründüğü gibi) ile ilgili sorun yaşıyorum. Bir hata raporu hazırladım, ancak bu arada Scene Builder 10+ GB kullandığından sistemim bazen dayanılmaz derecede yavaşlıyor.

Geçici bir düzeltme olarak, kullanabileceği bellek miktarını sınırlamak istiyorum. Aşağıdakileri JVMOptions altındaki SceneBuilder.cfg dosyasında ayarlamayı denedim:

-XX:InitialHeapSize=256m
-XX:MaxHeapSize=256m
-XX:MaxMetaspaceSize=256m

jps Argümanların sürece iletildiğini onaylar:

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

Bununla birlikte, işlem hala bellek kullanımında tırmanıyor, 256 MB'yi geçiyor, hızla 6 GB'ı aştı.

Peki bir Java işleminde kullanılan bellek miktarını gerçekten sınırlamanın bir yolu var mı?

Düzenleme: Kullanmayı denedim ulimit:

ulimit -d 1024000 -v 1024000 -m 1024000

ama sonra başlatmaya çalışırken bir hata alıyorum:

Error occurred during initialization of VM
Could not allocate metaspace: 1073741824 bytes

Java’nın gerçekten MetaspaceSize parametresini yoksayar. Java 8'de belleği sınırlamanın başka bir yolu var mı?

Yanıtlar:


0

Unix tabanlı bir işletim sisteminde olduğunuzu varsayalım.

  1. Programı farklı bir kullanıcı olarak çalıştırabilir ve /etc/security/limits.conf bu hesapta. Bu, normal kullanıcı hesabınız için daha fazla kaynak ayırmanıza izin vermelidir.

  2. İşlemi kafes gibi araçlarla deneyebilirsiniz zaman aşımı .

Ancak ulimit yardım etmediğinden, muhtemelen sadece çökmekte olan (bellek ayıramayan) veya sistem tarafından öldürülen bir işlemle sonuçlanır.

Ayrıca check-out https://unix.stackexchange.com/questions/44985/limit-memory-usage-for-a-single-linux-process Çünkü bu benzer bir soru.

Düzenleme: Metaspace limiti gelince göz ardı ediliyor. Cevap burada https://stackoverflow.com/questions/31075761/java-8-reserves-minimum-1g-for-metaspace-despite-maxmetaspacesize

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.