У меня есть файл.bat, в который я могу передать параметры.
LOAD_TABLE_WRAPPER.BAT Table1 DEV
Вкратце, он запускает SQL для загрузки таблицы 1 в среде разработки. Теперь я хочу, чтобы он загружал несколько таблиц за одну ночь. Итак, я создал мастер-файл.BAT, который выглядит примерно так
::MASTER_LOAD.BAT
CALL LOAD_TABLE_WRAPPER.BAT Table1 Dev
CALL LOAD_TABLE_WRAPPER.BAT Table2 Dev
CALL LOAD_TABLE_WRAPPER.BAT Table3 Dev
Если я отправляю MASTER _LOAD.BAT из cmd, он выполняет загрузку для таблицы 1, но не переходит к загрузке таблицы 2. Это последние две строки файла WRAPPER.BAT
:eof
exit %ERROR_STATUS%
-. 121 ---1672003-
Я хочу создать большой массив int, который почти заполнит всю память, доступную для JVM. Возьмем, к примеру, этот код:
final int numBuffers = (int) ((runtime.freeMemory() - 200000L) / (BUFFER_SIZE));
System.out.println(runtime.freeMemory());
System.out.println(numBuffers*(BUFFER_SIZE/4)*4);
buffers = new int[numBuffers*(BUFFER_SIZE / 4)];
При запуске с размером кучи 10M генерируется исключение OutOfMemoryException, несмотря на вывод printlns:
9487176
9273344
Я понимаю, что у массива будут некоторые накладные расходы, но не 200 тыс., Конечно? Почему java не может выделить память для чего-то, для чего, как утверждается, достаточно места? Я должен установить эту константу, которая вычитается из чего-то около 4M, прежде чем Java запустит это (. К этому времени printlns больше похож на :9487176 5472256)
Еще более удивительно, если я заменю буферы двумерным массивом:
buffers = new int[numBuffers][BUFFER_SIZE / 4];
Затем он работает без замечаний, используя показанное выше вычитание 200 КБ -, даже несмотря на то, что количество сохраняемых целых чисел одинаково в обоих массивах (.так как у него есть все эти ссылки на другие массивы для хранения ).
Любые идеи?