Я использую парсер для определения 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