注意:本题引用Jsoup 1.6.1
我需要使用 Jsoup 解析多个文档,但我注意到内存会在一段时间后累积。使用堆转储和内存分析器,我已将问题追踪到 Jsoup 的 Tokeniser
类,该类存储 ParseError
的 ArrayList
。在堆转储中,存储了超过 500 万个 ParseError
对象,每个 56 字节。
查看源代码,我注意到 org.jsoup.parser.Tokeniser
中的一个变量允许关闭错误跟踪。按照调用流程,我看不到任何关闭它的调用,尽管有一种方法可以这样做。该类不是公开的,我不得不修改源代码并从源代码构建它。
有没有我可以调用的方法或我可以设置的属性来有效地禁用 Tokeniser
中的错误跟踪,而无需修改源代码?
最佳答案
原来问题不是由 Jsoup 引起的。它试图解析的文件不是 HTML 文件而是图像。由于 Jsoup 不打算检查它是否具有正确的文件类型,并且依赖于程序员首先检查,所以这个问题的答案是在 Jsoup 1.6.1 中,除非您修改源代码。在 Jsoup 的 Tokeniser
类中关闭错误跟踪确实减少了内存使用并提高了一点速度(由于没有在 ArrayList
中插入很多元素),但是修改源代码不是受到推崇的。如果您遇到此问题,请先检查您自己的代码。 ;)
关于java - 如何在 Jsoup Tokenizer 中禁用错误跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8030303/