Ich weiß, dass eine Methode mit Java nicht größer als 64 KB sein kann. Die Einschränkung verursacht Probleme mit generiertem Code aus einer JavaCC- Grammatik. Wir hatten Probleme mit Java 6 und konnten dies durch Ändern der Grammatik beheben. Wurde das Limit für Java 7 geändert oder ist es für Java 8 geplant?
Nur um es klar zu machen. Ich brauche keine Methode, die größer als 64 KB ist. Aber ich habe eine Grammatik geschrieben, die nach einer sehr großen Methode kompiliert wird.
Antworten:
Laut JVMS7 :
Aber das ist ungefähr
Java 7
.Es gibt keine endgültigen Spezifikationen für Java 8, daher konnte niemand (außer seinen Entwicklern) diese Frage beantworten.UPD (2015-04-06) Laut JVM8 gilt dies auch für
Java 8
.quelle
Gute Frage. Wie immer sollten wir zur Quelle gehen , um die Antwort zu finden ( "The Java® Virtual Machine Specification" ). Der Abschnitt erwähnt zwar nicht explizit ein Limit (wie auch die Java6-VM-Spezifikation), aber etwas umsichtig:
Prost,
quelle
Es hat sich nicht geändert. Das Limit des Codes in Methoden beträgt sowohl in Java 7 als auch in Java 8 immer noch 64 KB.
Verweise:
quelle
Andremoniy hat den
java 7
Teil dieser Frage bereits beantwortet , aber zu diesem Zeitpunkt schien es bald zu entscheiden,java 8
also vervollständige ich die Antwort, um diesen Teil abzudecken:Zitat aus jvms :
Wie Sie sehen, scheint dieses historische Problem zumindest in dieser Version (Java 8) keine Lösung zu finden.
quelle
Als Abhilfe kann und wenn Sie den Zugriff auf den Code des Parsers haben, können Sie es zur Arbeit in was auch immer ‚Grenzen ändern von den JVM - Compiler auferlegt werden ... (vorausgesetzt , es ewig dauern den't die Teile in dem Parser - Code zu finden , um ändern)
quelle