Инициализация:
ArrayList<Integer> M1 = new ArrayList<Integer>(400);
M1.addAll(M2);
По умолчанию, если используется пустой конструктор, создаётся список с дефолтным значением capacity, которое будет равно 10.
При добавлении 11 элемента, будет расширен список. В зависимости от JVM результирующий размер может быть разный. В Oracle jvm вроде на 50% растёт. Т.е, новый массив будет иметь размер 15.
Вы можете в конструктор передать размер начальный capacity. Тогда просто изначально внутри будет создан массив нужного размер (например, 400). Но при заполнении механизм расширения массива будет тем же самым, что и при дефолтном значении.
Если вопрос, конечно, про это.
Если вопрос в том, может ли jvm сама без изменений со стороны кода решить изменить размер списка, то нет, не может.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей