Я пытаюсь разобрать большие XML-файлы размером около 6 Гб в объект Java.Ниже приведена реализация, которую я использовал для анализа большого файла.Работает только с 20Gb кучи.Я хотел бы еще больше уменьшить объем отпечатка памяти.
XMLInputFactory xif = XMLInputFactory.newInstance();
XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("abc.xml"));
xsr.nextTag();
long addEntity = 0;
long unmarshalEntity = 0;
JAXBContext jc = JAXBContext.newInstance(XYZ.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
while(xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
long start1 = System.currentTimeMillis();
XYZ sample = (XYZ) unmarshaller.unmarshal(xsr);
}
Он продолжает выдавать.У меня 3,3 миллиона объектов XYZ, если я анализирую весь файл.Итак, есть ли способ удержать эти объекты в памяти, поскольку мне нужно выполнить некоторую постобработку этих объектов, поскольку постобработка зависит от нескольких объектов XYZ.