Получить JVM для увеличения потребности в памяти по мере необходимости до предела размера виртуальной машины?

Мы поставляем Java-приложение, чья потребность в памяти может сильно варьироваться в зависимости от размера обрабатываемых данных. Если вы не устанавливаете максимальный размер виртуальной памяти (VM), довольно часто JVM завершает работу с ошибкой GC на больших данных.

Мы хотели бы видеть, что JVM запрашивает больше памяти, поскольку GC не может предоставить достаточно, пока не будет исчерпан общий объем доступной виртуальной машины. например, начните с 128 Мб и увеличивайте геометрически (или какой-либо другой шаг) всякий раз, когда сбой ГХ.

Командная строка JVM («Java») позволяет явно задавать максимальные размеры виртуальных машин (различные команды -Xm *), и вы думаете, что это будет соответствовать требованиям. Мы пытаемся сделать это в файле .cmd, который поставляется вместе с приложением. Но если вы выберете какое-то конкретное число, вы получаете одно из двух плохих поведений: 1) если ваше число достаточно мало, чтобы работать на большинстве целевые системы (например, 1 Гб), он недостаточно велик для больших данных, или 2) если вы сделаете его очень большим, JVM отказывается работать на тех системах, у которых фактическая виртуальная машина меньше указанной.

Как настроить Java на использование доступной виртуальной машины при необходимости, не зная заранее этого числа и не захватывая все это при запуске?

Ответы на вопрос(14)

Ваш ответ на вопрос