Proces java, który używam, działa niezmiennie dobrze w ciągu pierwszej godziny lub tak, że działa. Jednak wydajność szybko się pogarsza. Podczas profilowania znalazłem, że zbieranie śmieci metaspace się dość często, aż godzinie i potem wymknął się spod kontroli:Java 8 metaspace wywóz śmieci
Jestem całkiem pewien, że będę w stanie rozwiązać ten problem za pomocą -XX: Opcja MaxMetaspaceSize. Chciałbym jednak wiedzieć więcej o przyczynach takiego zachowania. Nie mogę sobie wyobrazić, dlaczego algorytm zbierania śmieci miałby się tak zachowywać. Czy ktoś ma jakieś wyjaśnienie lub poradę na temat lepszej poprawki? Dzięki
Myślę, że za pomocą niektórych ramy, które generują klasy w RunTime. I w końcu wymyka się spod kontroli. Rozwiązanie zależy od używanego frameworka. – talex
Dzięki, i tak, jestem. To mi się przydarzyło, ale tempo, w jakim generowane są klasy, nie wydaje się zmieniać. Wszystko, co wydaje się zmieniać, to spadek częstotliwości gc. – user1675642
To prawdopodobnie niektóre heurystyki JVM. Próbuje znaleźć lepsze parametry, takie jak maksymalny rozmiar. Również wygląda jak efekt stroboskopowy. Rozmiar metaspazy mierzony w określonym momencie. Gdy częstotliwość GC jest w przybliżeniu taka sama jak częstotliwość pomiaru, mogą wystąpić pewne dziwne efekty. – talex