Uzyskaj JVM, aby zwiększyło zapotrzebowanie na pamięć w miarę potrzeb do rozmiaru limitu VM?

Wysyłamy aplikację Java, której zapotrzebowanie na pamięć może się znacznie różnić w zależności od rozmiaru przetwarzanych danych. Jeśli nie ustawisz maksymalnego rozmiaru maszyny wirtualnej (wirtualnej pamięci), często JVM kończy pracę z awarią GC na dużych danych.

Chcielibyśmy zobaczyć, że JVM żąda więcej pamięci, ponieważ GC nie zapewnia wystarczającej ilości danych, dopóki całkowita dostępna maszyna wirtualna nie zostanie wyczerpana. np. rozpocznij od 128 MB i zwiększ geometrycznie (lub jakiś inny krok), gdy zawiodła GC.

Wiersz poleceń JVM („Java”) pozwala na wyraźne ustawienie maksymalnych rozmiarów maszyn wirtualnych (różne polecenia -Xm *) i można by pomyśleć, że będzie to odpowiednie. Staramy się to zrobić w pliku .cmd, który wysyłamy wraz z aplikacją. Ale jeśli wybierzesz jakiś konkretny numer, otrzymasz jedno z dwóch złych zachowań: 1) jeśli twój numer jest wystarczająco mały, aby działać na większości systemów docelowych (np. 1 GB), nie jest wystarczająco duży dla dużych danych, lub 2) jeśli czynisz go bardzo dużym, JVM odmawia uruchomienia na systemach, których rzeczywista VM jest mniejsza niż określona.

W jaki sposób skonfigurować Java, aby w razie potrzeby korzystała z dostępnej maszyny wirtualnej, nie znając wcześniej tego numeru i nie chwytając go podczas uruchamiania?

questionAnswers(14)

yourAnswerToTheQuestion