1. ホーム
  2. java

[解決済み] Java 7 と 8 におけるメソッドの最大サイズ

2023-06-18 07:12:43

質問

Javaでメソッドが64KBより大きくできないことは知っています。この制限のために JavaCC 文法から生成されたコードで問題が発生します。Java 6で問題が発生し、文法を変更することで修正できました。Java 7 では制限が変更されたのでしょうか、それとも Java 8 で予定されているのでしょうか?

はっきりさせておきたいのですが。私自身は64KBより大きなメソッドは必要ありません。しかし、私は非常に大きなメソッドにコンパイルする文法を書きました。

どのように解決するのですか?

によると JVMS7 :

<ブロッククオート

end_pcが排他的であることは、Java仮想マシンの設計における歴史的な誤りです。 Java仮想マシンの設計における歴史的な誤りです。 メソッドのコードがちょうど 65535 バイト長で、1 バイト長の命令で終了する場合、その命令は メソッドのJava仮想マシンコードがちょうど65535バイトで、1バイト長の命令で終わる場合、その命令は例外ハンドラによって保護されることはできません。 例外ハンドラで保護することはできません。このバグを回避するために、コンパイラーは以下の方法をとります。 生成されるJava仮想マシンコードの最大サイズを制限する。 メソッド、インスタンス初期化メソッド、または静的イニシャライザに対して、生成されるJava仮想マシンコード (コード配列のサイズ)の最大サイズを 65534 バイトに制限することで、このバグを回避することができます。

しかし、これは約 Java 7 .

upd (2015-04-06) によると JVM8 にも当てはまります。 Java 8 .