我正在使用jsoup解析器讀取HTML文件並創建提取數據的XML文件。我將在一個包含多個html文件(〜250k - 300k文件)的目錄中運行此代碼/腳本,其中一些文件很大。JSoup - Java OutOfMemoryError - 在大文件中使用jsoup解析器
我碰上了
java.lang.OutOfMemoryError: Requested array size exceeds VM limit" or Java heap space
錯誤。我曾嘗試使用不同的-Xmx
和-Xms
值運行虛擬機,但我一直在碰到同樣的錯誤。我附上了我的代碼片段。 我假設讀取大文件時發生錯誤。任何想法如何解決這個問題?
String target_dir_output = "/test/";
File dir = new File(target_dir);
File[] files = dir.listFiles();
for (File f : files) {
if(f.isFile()) {
String fileName = f.getName();
String testValue = null;
try {
Document doc = Jsoup.parse(f, "UTF-8", "");
Elements metalinks = doc.select("meta[name=testValue]");
testValue = metalinks.first().attr("content");
String output = "<data>" + "\n";
output += "<testValue>" + testValue + "</testValue>" ;
output += "</data>";
FileOutputStream out = new FileOutputStream(fileName + ".xml");
out.write(output.getBytes());
out.close();
} catch (IOException e) {
e.printStackTrace();
}
文件的大小如何? – Whymarrh
1360554953是最大文件之一的文件大小。大部分文件屬於這個類別。 – User
您是否嘗試過運行'-Xms'和'-Xmx'? – Whymarrh