Ich habe ein Projekt, an dem ich gearbeitet habe und alles lief gut bis heute. Ich habe fast 6000 Zeilen Code in einem Java-Klasse-Dokument. Wenn ich versuche, eine weitere IF-Klausel in den Code einzufügen, löst das Programm eine Exception aus, wenn die Klasse aufgerufen wird. Alle zusätzlichen Snippets, die ich versucht habe, in die Klasse zu platzieren, führen dazu, dass die Klasse beim Aufruf fehlschlägt. Ich habe versucht, Testcode hinzuzufügen, von dem ich weiß, dass er gut funktioniert, und sie alle werfen den Force-Close-Alarmdialog auf. Vertrauen Sie mir, dass mit dem letzten Ausschnitt, den ich in die Klasse zu bringen versuche, nichts falsch ist. Sobald ich das letzte "if" -Snippet herausnehme, gibt es keine Fehler. Hat das schon mal jemand gesehen? Die Ausnahme wird im Emulator ausgelöst, wenn die Klasse aufgerufen wird. Ich bekomme das Force-Close-Alert-Fenster. Hier ist die Java-Dateigröße: 172,503 Bytes Vielen Dank im Voraus!Gibt es eine Begrenzung für die Anzahl der Codezeilen, die Sie in eine Eclipse Java Doument setzen können?
Antwort
Ich habe dieses Problem vor einiger Zeit entdeckt und herausgefunden, dass es kein Problem ist, 50k Zeilen und mehr Code in einem zu haben Klasse, solange das Methodenlimit nicht überschritten wird.
Je nachdem, was in einer einzigen Methode die Bytecode-Größe tatsächlich verursacht, habe ich Einschränkungen zwischen 2-3 k Zeilen Code/Methode erfahren.
hinzugefügt:
durch die Art und Weise an einem bestimmten Punkt in der Tat von Eclipse stürzt ab, wenn Ihr Gesamt Code zu groß wird zu kompilieren - zu 1 Gb erhöhen nur Speicher des Eclipse oder so. Bis jetzt war das genug für meine Projekte mit insgesamt ca. 100k Zeilen ...
Ich zerhackte die Methode und leitete die anderen Klassen um die Brocken zu finden, funktioniert es wie ein Charme. Die Methodengröße wurde überschritten. Dieser hat mich einen ganzen Tag gekostet. Aber was ist ein Tag im Leben eines Nubs wert LOL – lastshadowrider
@lastshadowrider Nur neugierig, wie viele Zeilen hatte Ihre Methode für den Absturz? – blessenm
etwa 5.980 Zeilen bevor es abgestürzt ist. Ich dachte, ich würde einfach weiter zu der Methode hinzufügen, weil alles gut funktionierte. Und dann Boom. – lastshadowrider
Ich habe das schon bemerkt, Eclipse läuft von Java selbst ab, daher ist es sehr RAM-intensiv, wenn Sie zu viel Code haben, so dass mehr benötigt wird, als zugewiesen werden kann, wird es abstürzen.
Wie viel ist zu viel? Die gesamte apk ist nur 512kb. – lastshadowrider
können Sie die gleichen mit folgenden Einstellungen ändern:
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
Wo gebe ich diese Aussagen ab? – lastshadowrider
öffnen Sie die Datei eclipse.ini und ändern Sie die Einstellungen – Satya
Danke für die Hilfe Satya – lastshadowrider
Gibt es eine Begrenzung für die Anzahl der Codezeilen Sie in einem Eclipse-Java-doument setzen.
Nicht genau.
Es gibt Beschränkungen für die Anzahl der Bytecodes in einer kompilierten Methode und andere Dinge wie diese, aber diese werden durch das Java-Klassendateiformat (d. H. Die JVM-Spezifikation) und nicht durch Eclipse auferlegt.
Es ist auch möglich, dass Eclipse mehr Speicher benötigt, obwohl ich nicht glaube, dass das Hinzufügen einer einzelnen if
-Anweisung dies zuverlässig auslösen würde. (Und wenn es so wäre, würde die Ausnahme Ihnen sagen, dass Sie keinen Speicher mehr hatten ...)
- 1. Python XLSXWRITE Gibt es eine Begrenzung für die Anzahl der Spalten, die erstellt werden können?
- 2. Gibt es eine Begrenzung für die Anzahl der PubSub-Themen, die abonniert werden können?
- 3. Gibt es eine Begrenzung für die Anzahl der Klassen, die ein Namespace in .net haben kann?
- 4. gibt es eine Begrenzung für die Anzahl der Threads, die Ruby auf einmal ausführen kann?
- 5. Gibt es eine Begrenzung für die Anzahl der Dateien in einem Verzeichnis auf einer SD-Karte?
- 6. Gibt es eine Begrenzung für die Anzahl der Marker, die auf Google Static Maps platziert werden können?
- 7. Gibt es ein Limit für die Anzahl der UIApplicationShortcutItems, die Sie haben können?
- 8. Gibt es eine Begrenzung der Anzahl der HTML-Elemente, die der Browser ohne Probleme anzeigen kann?
- 9. Setzen Sie die Anzahl der gefundenen Wörter in eine Variable
- 10. Hat youtube v3 Data api eine Begrenzung für die Anzahl der IDs, die Sie an videos.list senden können?
- 11. Gibt es eine Grenze für die Anzahl der verschiedenen Marker, die Sie in einer Fusionsebene haben können?
- 12. Hat Java eine Begrenzung für die Länge des Klassennamens?
- 13. Gibt es in mysql oder postgres eine Begrenzung für die Größe einer IN (1,2, n) -Anweisung?
- 14. Gibt es eine Begrenzung der Stapelgröße eines Prozesses in Linux
- 15. Gibt es eine Begrenzung der Datengröße mit replaceWIth in jQuery?
- 16. Gibt es eine maximale Anzahl von Kategorien, die in der Yelp-API zurückgegeben werden können?
- 17. über die Anzahl der Datei-Deskriptoren Begrenzung
- 18. Gibt es eine Java-Klasse, die eine POM.xml-Datei generiert?
- 19. Gibt es eine Grenze für die Anzahl der #defines, die die GCC- und VC++ - Vorprozessoren verarbeiten können?
- 20. Begrenzung der CPU-Anzahl für einen Benutzer
- 21. Gibt es eine Grenze für die Anzahl der Zeilen, die in einen einzelnen css-Befehl eingegeben werden können?
- 22. Wie können Sie die Anzahl der neuen Codezeilen minimieren (keine Methoden der String-Klasse verwenden)?
- 23. Gibt es eine Begrenzung für die Länge des Schlüssels (Zeichenfolge) in JS-Objekt?
- 24. Gibt es eine Möglichkeit, die Anzahl der Anweisungen in Java zu zählen
- 25. Begrenzung der Anzahl generischer Parameter in .NET?
- 26. Gibt es eine Java-Bibliothek für die Domain-Suche?
- 27. Redis: Gibt es eine Grenze für die Anzahl der Schlüssel, die ich speichern kann?
- 28. Gibt es eine COM-Bibliothek für Java, die gut funktioniert?
- 29. Anzahl der Parameter, die an eine UDF in scala übergeben werden können
- 30. Setzen Sie die Genauigkeit für eine Float-Nummer in PHP
* "... das Programm löst eine Ausnahme aus, wenn die Klasse aufgerufen wird" *. Welche Ausnahme? Wo wird die Ausnahme ausgelöst? Durch Eclipse? Im laufenden Programm? Was meinst du mit "angerufen"? –
Möglicherweise stoßen Sie auf die Größenbeschränkung für 64 KB (Bytecode). http://stackoverflow.com/questions/107855/is-there-any-no-of-lines-code-limit-for-a-java-class und http://stackoverflow.com/questions/5689798/why- Do-Java-Limit-the-Größe-von-Methode-zu-65535-Byte und http://StackOverflow.com/Questions/6570343/maximum-Size-of-Amethod-in-Java –
ich sollte weisen Sie darauf hin, dass eine Klasse mit 6.000 Codezeilen ein ** WIRKLICH ** schlechtes Design anzeigt. Wenn Sie Ihren Code auf etwas Vernünftigeres umgestalten/modularisieren, sollte das Problem verschwinden. –