Java 如何在Jsoup';中禁用错误跟踪;什么是代币器?

Java 如何在Jsoup';中禁用错误跟踪;什么是代币器?,java,jsoup,Java,Jsoup,注意:此问题指的是Jsoup 1.6.1 我需要使用Jsoup解析几个文档,但我注意到内存在一段时间后积累。使用堆转储和内存分析器,我将问题追踪到了Jsoup的Tokeniser类,该类存储了ParseError的ArrayList。在堆转储中,存储了500多万个ParseError对象,每个对象有56字节 查看源代码时,我注意到org.jsoup.parser.Tokeniser中有一个变量,它允许关闭错误跟踪。按照调用流,我看不到任何关闭它的调用,尽管有一个方法可以这样做。由于类不是公共的,

注意:此问题指的是
Jsoup 1.6.1

我需要使用Jsoup解析几个文档,但我注意到内存在一段时间后积累。使用堆转储和内存分析器,我将问题追踪到了Jsoup的
Tokeniser
类,该类存储了
ParseError
ArrayList
。在堆转储中,存储了500多万个
ParseError
对象,每个对象有56字节

查看源代码时,我注意到
org.jsoup.parser.Tokeniser
中有一个变量,它允许关闭错误跟踪。按照调用流,我看不到任何关闭它的调用,尽管有一个方法可以这样做。由于类不是公共的,我不得不修改源代码并从源代码构建它


是否有一种方法可以调用,或者可以设置一个属性来有效地禁用
令牌服务器中的错误跟踪,而无需修改源代码?

结果表明问题不是由Jsoup引起的。它试图解析的文件不是HTML文件,而是图像。由于Jsoup并不打算检查它是否具有正确的文件类型,并且首先依赖于程序员来检查,因此在Jsoup 1.6.1中,这个问题的答案是,除非修改源代码,否则不能。关闭Jsoup的
Tokeniser
类中的错误跟踪确实减少了内存使用并稍微提高了速度(因为没有在
ArrayList
中插入许多元素),但不建议修改源代码。如果遇到此问题,请先检查自己的代码。;)

我确实修改了源代码,因为我在一个生产环境中,所以我需要它尽快工作。我仍然很好奇这是否可以在不修改源代码的情况下实现。你能展示你用来进行解析的代码吗?当然,与上一样,但数据不同。查看源代码,我发现你提到的所有内容都是正确的。没有可以直接调用的方法来关闭错误跟踪,必须修改源代码。然而,也许值得为Jsoup员工提出一个问题。除了向错误列表中添加错误外,错误列表没有任何用处。看起来这只是用于类Tokeniser中的内部调试,他们忘记了在将代码移动到生产环境之前关闭控制错误日志记录的布尔变量。(在TreeBuilder类中,他们确实关闭了它)。在源代码中关闭它本身会减少大量内存,并使解析看起来更快,尽管我没有数字,但感觉更快。首先,问题不在于Jsoup,而在于数据。有人发送了一张图片,声称这是一个HTML文档。500万像素,500万
ParseError
对象