Я использую 1.6.0_25 64 бит на Windows 7 64 бит.
Я пытаюсь запустить JVM с максимальной памятью, потому что мое приложение очень интенсивно использует память ... но, к сожалению ... распределение памяти не увеличивается, и в окнах много сбоев страниц, которые продолжают приносить следующий набор виртуальной памяти в.
Я запускаю тест Java -Xms2G -Xmx3G
Следующий код - моя попытка ввести весь файл ... так, чтобы я не столкнулся с ошибками страницы при чтении.
File f = new File("veryLARGEfile.txt");
FileInputStream in = new FileInputStream(f);
int i = (int) f.length();
System.out.println("Bytes in file: " + i);
byte[] file = new byte[i];
i = in.read(file);
System.out.println("Bytes read: " + i);
выполняя этот метод, я вижу, что в диспетчере задач Windows система достигает 2 ГБ памяти, пока она читает файл ... но как только она закончит чтение ... память снова падает вниз !!!!
Это серьезная проблема ... мне нужно, чтобы весь байтовый массив оставался в активной памяти.
Спасибо,
эй
Я изменил код, чтобы использовать базовые типы массивов int [] [] и float [] [] для хранения моих данных вместо хранения ArrayLists объекта, содержащего int и float.
делая это, я обнаружил, что моя java-память не переставляется (поэтому, я полагаю, кучная память обрабатывается здесь немного иначе, чем в стеке) [о, я также изменил весь код, чтобы он был статически типизирован - я знаю, очень плохой стиль программирования]
проблема, с которой я сейчас сталкиваюсь, заключается в том, как обрабатывать мой HashMap ... все мои попытки создания таблицы поиска терпят неудачу из-за времени выполнения O (n ^ 2) !!!