実行時にクラスを生成してコンパイルするアプリケーションを開発しています。これにより、大量のコードが生成されることがあります。
テスト ケースの 1 つで、JVM からエラーが発生しました。
TestClass.java:83865: too many constants
これだけ。同様のエラーに関する他のレポートを見たことがありますが、それらの場合、定数プールに関するエラー メッセージが表示されます。しかし、この場合はそうではありません。
これが JVM の定数プールの制限に達したことを意味する場合、それはどういう意味ですか? つまり、Java コードに関して、これらはどのような定数なのでしょうか? クラスメソッド?田畑?リテラル?静的または最終的なメソッドもフィールドもありません。
手がかりを教えてもらえますか?
編集:
コードを複数のクラスに分割することは、すでに予定されています。この正確な理由ではありませんでしたが。
私はコンスタントプールの限界を認識しており、私の疑問はまさに何が入るかでした。生成されたコードには、約 10000 のメソッドとフィールドしかありません。
リテラルも定数プールに移動するかどうかは疑問です。これが、この数値を 65K まで上げる唯一の理由だからです。そのようです。