【发布时间】:2018-02-27 16:50:53
【问题描述】:
我正试图跑到OutOfMemoryException。我的方法创建一个文件,解析如果没有错误然后立即删除该文件,清除垃圾收集并生成一个更大的文件并重复。但是大文件会消耗太多时间和 CPU。有没有更好的方法来做到这一点?谢谢。
public static void main(String[] args) {
for (int i = 6000000; i <= 10000000; i+=100000) {
WriteXml(i);
try {
File fXmlFile = new File("limit.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
new Thread() {
public void run() {
try {
dBuilder.parse(fXmlFile);
} catch (SAXException | IOException e) {
e.printStackTrace();
}
}
fXmlFile.delete();
};
} catch (Exception e) {
e.printStackTrace();
System.out.println(i);
}
System.gc();
}
}
【问题讨论】:
-
那么你到底在问什么?如何以更节省内存的方式解析 XML?使用 SAX 或 StAX 解析器,而不是 DOM。或者如何检查内存消耗?为此使用分析器。
-
... 为什么要引起
OutOfMemoryException? -
我试图弄清楚 XML 文件有多大会导致内存不足异常
-
我正在做一项评估解析器的作业,其中一个要求是找出会导致内存不足的 XML 有多大。
-
那么,如果你调用
dBuilder.parse时你的xml文件太大,它应该抛出一个OutOfMemoryException?
标签: java xml parsing memory out-of-memory