Nano Hash - криптовалюты, майнинг, программирование

Почему максимальная куча меняется во время выполнения?

У нас есть приложение Java, работающее в openjdk8, максимальная память кучи которого изменяется во время выполнения - в чем может быть причина этого?

Я нашел вопрос Почему куча меняется в java, который указывает на статья, объясняющая разницу между max и committed памятью. Кажется, что в нашем случае эти два обычно совпадают, но не всегда — см. 11:53 на скриншотах ниже.

Куча также может быть изменена серийным сборщиком молодого поколения (-XX:MaxHeapFreeRatio, см. «>Поощрять JVM к GC, а не к увеличению кучи?), однако мы используем параллельный сборщик, так что это не тот случай.

Параметры JVM, связанные с памятью, с которыми мы запускаем приложение:

-XX:MaxMetaspaceSize=200M -Xms2000m -Xmx2000m

Не уверен, что это связано, приложение выполняло параллельную развертку меток на старых поколениях между 11:55 и 11:58 — в это время было доступно более 200 МБ свободной памяти, и мы не видим причин для такого поведения.

«Куча Отметить счетчик развертки


  • В вопросе отсутствуют параметры JVM и соответствующие журналы GC. 24.04.2018
  • Кстати, -XX:+UseAdaptiveSizePolicy включен по умолчанию. 24.04.2018
  • @apangin Я добавил к вопросу параметры JVM. Наш журнал GC отключен, поэтому я не могу предоставить их для этого случая. Мы должны были бы включить их и ждать, пока это не произойдет снова. 25.04.2018
  • Итак, вы используете Parallel GC, у которого по умолчанию включена политика адаптивного размера. Установите -XX:-UseAdaptiveSizePolicy, если вы не хотите изменять размер поколений кучи. 25.04.2018
  • @apangin почему это не ответ? Именно то, что спросил ОП 27.04.2018

Ответы:


1

Вы используете Parallel GC, в котором по умолчанию включена политика адаптивного размера.
Установите -XX:-UseAdaptiveSizePolicy, если вы не хотите, чтобы размеры кучи изменялись.

28.04.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..