Wiem, że metoda w Javie nie może być większa niż 64 KB. Ograniczenie powoduje problemy z generowanym kodem z gramatyki JavaCC . Mieliśmy problemy z Javą 6 i mogliśmy to naprawić, zmieniając gramatykę. Czy limit został zmieniony dla Java 7, czy jest planowany dla Java 8?
Żeby to było jasne. Nie potrzebuję samodzielnie metody większej niż 64 KB. Ale napisałem gramatykę, która składa się z bardzo dużej metody.
Odpowiedzi:
Według JVMS7 :
Ale o to chodzi
Java 7
.Nie ma ostatecznej specyfikacji Java 8, więc nikt (poza jej twórcami) nie mógł odpowiedzieć na to pytanie.UPD (2015-04-06) Według JVM8 dotyczy to również
Java 8
.źródło
Dobre pytanie. Jak zawsze powinniśmy udać się do źródła, aby znaleźć odpowiedź ( „Specyfikacja maszyny wirtualnej Java®” ). Sekcja nie wspomina jednak wyraźnie o limicie (tak jak w specyfikacji maszyny wirtualnej Java6), ale dość ostrożnie:
Twoje zdrowie,
źródło
To się nie zmieniło. Limit kodu w metodach nadal wynosi 64 KB zarówno w języku Java 7, jak i Java 8.
Bibliografia:
źródło
Andremoniy już odpowiedział na
java 7
część tego pytania, ale wydaje się, że w tamtym czasie należało zadecydować,java 8
więc uzupełniam odpowiedź, aby opisać tę część:Cytowanie z jvms :
Jak widać, ten historyczny problem nie wydaje się rozwiązać przynajmniej w tej wersji (java 8).
źródło
Aby obejść ten problem, jeśli masz dostęp do kodu parsera, możesz zmodyfikować go tak, aby działał w ramach jakichkolwiek ograniczeń nałożonych przez kompilator JVM ... (Zakładając, że znalezienie fragmentów kodu parsera nie zajmie wieczności modyfikować)
źródło