Процесс java, который я запускаю, работает хорошо в первый час или так, чтобы он работал. Однако производительность быстро ухудшается. При профилировании я обнаружил, что сбор мусора Метапространство не происходило довольно часто, пока часовой марки, а затем вышел из-под контроля:Java 8 metaspace сбор мусора
Я довольно уверен, что я смогу это исправить с помощью -XX: Параметр MaxMetaspaceSize. Тем не менее, я хотел бы узнать больше о том, почему такое поведение может возникнуть. Я не могу представить, почему алгоритм сбора мусора будет вести себя так. У кого-нибудь есть объяснение или совет по поводу лучшего исправления? Спасибо
Я думаю, вы используете фреймворк, который генерирует классы в RunTime. И в итоге он выходит из-под контроля. Решение зависит от используемой вами структуры. – talex
Спасибо, и да, я. Это произошло со мной, но скорость создания классов не меняется. Все, что, похоже, меняется, так это то, что частота gc уменьшается. – user1675642
Это, вероятно, несколько эвристик JVM. Он пытается найти лучшие параметры, такие как максимальный размер. Также он выглядит как стробоскопический эффект. Размер измеряемой площади в определенный момент времени. Когда частота GC примерно такая же, как и частота измерения, могут возникать некоторые странные эффекты. – talex