Wreszcie!
Od wersji Java 8u191 dostępne są teraz następujące opcje:
-XX:InitialRAMPercentage
-XX:MaxRAMPercentage
-XX:MinRAMPercentage
które mogą być użyte do ustalenia wielkości stosu jako procent użytecznej fizycznej pamięci RAM. (który jest taki sam, jak pamięć RAM zainstalowana mniej, niż używa jądro).
Aby uzyskać więcej informacji, zobacz Informacje o wersji Java8 u191 . Zauważ, że opcje są wymienione pod nagłówkiem Docker, ale w rzeczywistości mają zastosowanie niezależnie od tego, czy jesteś w środowisku Docker, czy w tradycyjnym środowisku.
Domyślna wartość MaxRAMPercentage
to 25%. To jest bardzo konserwatywne.
Moja własna zasada: jeśli Twój host jest mniej więcej poświęcony uruchamianiu danej aplikacji Java, możesz bez problemu dramatycznie wzrosnąć. Jeśli korzystasz z systemu Linux, korzystasz tylko ze standardowych demonów i zainstalowałeś pamięć RAM od około 1 Gb i więcej, nie wahałbym się użyć 75% na stertę JVM. Ponownie pamiętaj, że jest to 75% dostępnej pamięci RAM , a nie zainstalowana pamięć RAM . Pozostały procesy lądowe innych użytkowników, które mogą być uruchomione na hoście, oraz inne rodzaje pamięci, których potrzebuje JVM (np. Do stosu). Ogólnie rzecz biorąc, będzie to zazwyczaj dobrze pasować w pozostałych 25%. Oczywiście przy jeszcze większej ilości zainstalowanej pamięci RAM 75% jest bezpieczniejszym wyborem. (Chciałbym, żeby ludzie z JDK wprowadzili opcję, w której można określić drabinę)
Ustawienie MaxRAMPercentage
opcji wygląda następująco:
java -XX:MaxRAMPercentage=75.0 ....
Należy zauważyć, że te wartości procentowe są typu „podwójnego”, dlatego należy je podać kropką dziesiętną. Występuje nieco dziwny błąd, jeśli użyjesz „75” zamiast „75.0”.