Расчет аргумента памяти Java
Мы обычно задаем значения для -Xmx и -Xms при выполнении приложения Java и увеличиваем размер кучи в соответствии с нашим требованием (чтобы избежать ошибки нехватки памяти).
У меня вопрос, как мы рассчитаем требования к памяти? Давайте возьмем ниже пример:
for(int i=0 ; i<1000; i++){
try{
array.add(new ArrayList<Integer>(100000000));
}catch(OutOfMemoryError e){
}
}
Сначала эта программа запускается с -Xmx128M, а затем запускается с -Xmx256M. Будет ли программа работать в обоих условиях? Если нет, то в чем может быть причина, и можем ли мы рассчитать соответствующее значение аргумента памяти, необходимого для запуска этой программы?