- Czy G1 jest domyślnym kolektorem w Javie 7, a jeśli nie, jak aktywować G1?
G1 nie jest domyślnym kolektorem w Javie 7. -XX:+UseG1GC
włączy G1GC
- Jakie opcjonalne ustawienia ma G1 w Javie7?
Jest wiele. Zapoznaj się z tym artykułem w wyroczni, aby uzyskać pełne informacje.
G1 GC to adaptacyjny moduł odśmiecania pamięci z ustawieniami domyślnymi, które umożliwiają wydajną pracę bez modyfikacji.
Z tego powodu dostosuj krytyczne parametry
-XX:MaxGCPauseMillis
-XX:G1HeapRegionSize
-XX:ParallelGCThreads
-XX:ConcGCThreads
i pozostaw wszystkim innym parametrom wartość domyślną .
Oto lista ważnych opcji i ich wartości domyślnych. Ta lista dotyczy najnowszej maszyny wirtualnej Java HotSpot, kompilacja 24. Możesz dostosować i dostroić ustawienia G1 GC w wierszu poleceń maszyny JVM.
Ważne wartości domyślne:
-XX:G1HeapRegionSize=n
Ustawia rozmiar regionu G1. Wartość będzie potęgą dwóch i może wynosić od 1 MB do 32 MB. Celem jest posiadanie około 2048 regionów w oparciu o minimalny rozmiar sterty Java.
-XX:MaxGCPauseMillis=200
Ustawia wartość docelową dla żądanego maksymalnego czasu przerwy. Wartość domyślna to 200 milisekund. Podana wartość nie dostosowuje się do rozmiaru sterty.
-XX:G1NewSizePercent=5
Ustawia procent sterty, który ma być używany jako minimum dla rozmiaru młodego pokolenia. Wartość domyślna to 5 procent stosu Java.
-XX:G1MaxNewSizePercent=60
Ustawia procent rozmiaru sterty, który ma być używany jako maksymalny dla rozmiaru młodego pokolenia. Wartość domyślna to 60 procent stosu Java.
-XX:ParallelGCThreads=n
Ustawia wartość wątków roboczych STW. Ustawia wartość n na liczbę procesorów logicznych. Wartość n jest taka sama, jak liczba procesorów logicznych, aż do wartości 8.
Jeśli jest więcej niż osiem procesorów logicznych, ustawia wartość n na około 5/8 procesorów logicznych. Działa to w większości przypadków, z wyjątkiem większych systemów SPARC, w których wartość n może wynosić około 5/16 procesorów logicznych.
-XX:ConcGCThreads=n
Ustawia liczbę równoległych gwintów znakujących. Ustawia n na około 1/4 liczby równoległych wątków wyrzucania elementów bezużytecznych (ParallelGCThreads).
-XX:InitiatingHeapOccupancyPercent=45
Ustawia próg zajętości sterty Java, który wyzwala cykl znakowania. Domyślne zajęcie wynosi 45 procent całej sterty Java.
-XX:G1MixedGCLiveThresholdPercent=65
Ustawia próg zajętości dla starego regionu, który ma być uwzględniony w mieszanym cyklu wyrzucania elementów bezużytecznych. Domyślne obłożenie to 65 procent
-XX:G1HeapWastePercent=10
Ustawia procent sterty, który chcesz zmarnować. Maszyna wirtualna Java HotSpot nie inicjuje cyklu mieszanego wyrzucania elementów bezużytecznych, gdy procent do odzyskania jest mniejszy niż procent marnotrawstwa sterty
-XX:G1MixedGCCountTarget=8
Ustawia docelową liczbę mieszanych operacji wyrzucania elementów bezużytecznych po cyklu znakowania w celu zebrania starych regionów z maksymalnie G1MixedGCLIveThresholdPercent danymi na żywo. Wartość domyślna to 8 mieszanych kolekcji elementów bezużytecznych
-XX:G1OldCSetRegionThresholdPercent=10
Ustawia górny limit liczby starych regionów do zebrania podczas mieszanego cyklu wyrzucania elementów bezużytecznych. Wartość domyślna to 10 procent sterty Java
-XX:G1ReservePercent=10
Ustawia procent wolnej pamięci rezerwowej, aby zmniejszyć ryzyko przepełnienia przestrzeni. Wartość domyślna to 10 procent. Zwiększając lub zmniejszając wartość procentową, pamiętaj o dopasowaniu całkowitej sterty Java o tę samą wartość.
Ponownie skonfigurowałeś wiele parametrów G1GC, które nie są wymagane, jeśli postępujesz zgodnie z powyższą stroną dokumentacji. Proszę sprawdzić krzyżowo powyższe zalecenia, zwłaszcza dotyczące ParallelGCThreads i ConcGCThreads , które mają być oparte na rdzeniach procesora. Usuń zmianę konfiguracji niepotrzebnych parametrów.
Zalecenia firmy Oracle:
Podczas oceniania i dostrajania G1 GC, pamiętaj o następujących zaleceniach:
Wielkość młodego pokolenia : Unikaj jawnego określania wielkości młodego pokolenia za pomocą -Xmn
opcji lub jakiejkolwiek innej powiązanej opcji, takiej jak -XX:NewRatio
. Ustalenie wielkości młodego pokolenia unieważnia docelowy czas przerwy .
Cele czasowe wstrzymania: podczas oceny lub dostrajania dowolnego wyrzucania elementów bezużytecznych zawsze występuje kompromis między opóźnieniem a przepustowością. G1 GC to przyrostowy moduł wyrzucania elementów bezużytecznych z jednolitymi przerwami, ale także z większym obciążeniem wątków aplikacji. Celem przepustowości dla G1 GC jest 90 procent czasu aplikacji i 10 procent czasu usuwania elementów bezużytecznych .
- Czy wprowadzono jakieś zmiany w innych kolektorach, takich jak cms lub kolektor równoległy w Javie 7?
W Javie 7 nastąpiły pewne zmiany. Przeczytaj ten artykuł
- Gdzie mogę znaleźć dobrą dokumentację dotyczącą czyszczenia pamięci w Javie 7?
Zapoznaj się ze stroną dokumentacji Oracle dotyczącą gc i powiązanego pytania SE:
Wybieranie elementów bezużytecznych Java G1 w środowisku produkcyjnym