JSOUPは、ParserErrorオブジェクトが多すぎるため、完全なGCを維持していますか?

StackOverflow https://stackoverflow.com/questions/8368659

  •  27-10-2019
  •  | 
  •  

質問

JSoupは、HTMLを解析するための非常に便利なツールであり、Crawlerプロジェクトで基本的なUTILとして使用されます。しかし最近、私たちのクローラーはいつも完全なGCをやっていることがありました。

JMAPでオブジェクトをダンプした後、Parseerrorオブジェクトが多すぎることを見つけるのは驚くべきことです。ソースコードを読むことで、それは例外ではなく、オブジェクトです。 HTMLに問題がある場合、多くのエラーを引き起こす可能性があります。したがって、オブジェクトの作成を狂気に防ぐために、制御下にあるはずです。

いくつかの詳細情報は、次のように、解決策を見つけるのに役立つことを願っています。

   java.lang.Thread.State: RUNNABLE
        at org.jsoup.parser.Tokeniser.error(Tokeniser.java:211)
        at org.jsoup.parser.TokeniserState$47.read(TokeniserState.java:1170)
        at org.jsoup.parser.Tokeniser.read(Tokeniser.java:42)
        at org.jsoup.parser.TreeBuilder.runParser(TreeBuilder.java:101)
        at org.jsoup.parser.TreeBuilder.parse(TreeBuilder.java:53)
        at org.jsoup.parser.Parser.parse(Parser.java:24)
        at org.jsoup.Jsoup.parse(Jsoup.java:44)

 num     #instances         #bytes  class name
----------------------------------------------
   1:      30110820     1204432800  org.jsoup.parser.ParseError
   2:         33076      156025088  [Ljava.lang.Object;
   3:         68836       98796360  [C
   4:         65808        9778264  <constMethodKlass>
   5:         65808        8959520  <methodKlass>
   6:         12044        8524088  [B
   7:          6424        7447912  <constantPoolKlass>
   8:        102203        5494560  <symbolKlass>
   9:          6424        4909064  <instanceKlassKlass>
  10:          5271        4171032  <constantPoolCacheKlass>
  11:        105257        3368224  java.lang.String
役に立ちましたか?

解決

@baluscヒントをありがとう!

ソースコードを慎重に読んだ後、トラックエラーが開いており、APIが虚偽を設定することはありません。さらに、トラックエラーは役に立たないことがわかります。私はこれを修正してパッケージを再発行しますが、私はまだこれについて奇妙です、それは間違いですか?

code1:
    private boolean trackErrors = true;

code2:
    void error(TokeniserState state) {
        if (trackErrors)
            errors.add(new ParseError("Unexpected character in input", reader.current(), state, reader.pos()));
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top