我看到 VTD-XML parseGzip() 将完整的文件加载到内存中,从而导致 OutOfMemory。
我的 Eclipse -Xms20m 和 -Xmx100m 和 Gzipped Xml 文件大小为 50MB。我正在使用的示例代码如下,任何摆脱内存限制的命中都值得赞赏 VTDGen vg = new VTDGen();
isParsable = vg.parseGZIPFile(xmlFile, true);
long loadingTime = System.nanoTime();
System.out.println("read the file..");
if (isParsable) {
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("/records/record[bankbalance >100900]");
i = -1;
int j = 0;
while ((i = ap.evalXPath()) != -1) {
long l = vn.getElementFragment();
byte[] bytes = vn.getXML().getBytes();
fileOutputStream = new FileOutputStream(
"C:\\workspace\\TestFunc\\test\\out" + j + ".xml");
fileOutputStream.write(bytes, (int) l, (int) (l >> 32));
j++;
}