Как отключить отслеживание ошибок в Tokeniser Jsoup? - PullRequest
2 голосов
/ 07 ноября 2011

Примечание: Этот вопрос относится к Jsoup 1.6.1

Мне нужно проанализировать несколько документов с помощью Jsoup, но я заметил, что через некоторое время память нарастает.Используя дампы кучи и анализатор памяти, я отследил проблему до класса Tokeniser Jsoup, который хранит ArrayList из ParseError.В дампе кучи было сохранено более 5 миллионов ParseError объектов по 56 байт каждый.

Глядя на исходный код, я заметил переменную в org.jsoup.parser.Tokeniser, которая позволяет отключить отслеживание ошибок,После прохождения вызовов я не вижу ни одного вызова, чтобы отключить его, несмотря на то, что для этого есть способ.Класс не является общедоступным, я вынужден изменить исходный код и построить его из исходного кода.

Есть ли метод, который я могу вызвать, или свойство, которое я могу установить для эффективного отключения отслеживания ошибок в Tokeniser безнужно изменить исходный код?

1 Ответ

1 голос
/ 08 ноября 2011

Оказывается, проблема не вызвана Jsoup.Файл, который он пытался проанализировать, был не файлом HTML, а изображением.Поскольку Jsoup не предназначен для проверки правильности типа файла и полагается на то, что программист в первую очередь проверяет это, ответ на этот вопрос в Jsoup 1.6.1, вы не сможете, если не изменитеисходный код .Отключение отслеживания ошибок в классе Tokeniser Jsoup действительно уменьшило использование памяти и немного улучшило скорость (из-за того, что в ArrayList не было вставлено много элементов), но изменение исходного кода не рекомендуется.Если вы когда-либо сталкивались с этой проблемой, сначала проверьте свой собственный код.;)

...