Ist ein nicht verwendeter Import wie folgt - importieren android.widget.RelativeLayout; essen Speicher? Willst du nur wissen, wie viel oder nur ist es wertvoll? Vielleicht ist das eine blöde Frage, aber ich habe keine Antwort gefunden.Speichert eine nicht verwendete Importdeklaration Speicher in Java?
Antwort
Nein, sie nehmen keinen Speicher. Importe werden nur vom Compiler verwendet, um Klassennamen zur Kompilierungszeit aufzulösen.
Der Compiler ändert jeden Klassennamen in einen vollständig qualifizierten Namen. Und entfernt die Importanweisung. Also, die Import-Anweisung macht es nicht zu Byte-Code.
Das einzige Problem, das beim Platzieren von Platzhaltern auftreten kann, ist Namensraumkonflikt, d. H. Wenn zwei Typen mit demselben Namen in zwei verschiedenen Paketen definiert sind, führt der Import dieser Pakete mit Platzhaltern zu Namenskonflikten für diesen Typ. mit javap
Befehl
zu sehen, wie Compiler die Import-Anweisung ersetzt, können Sie den Byte-Code Ihrer Klasse generieren. Betrachten Sie den folgenden Code:
import java.util.*;
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
}
}
einfach den obigen Code kompilieren, und prüfen Sie den Byte-Code mit dem folgenden Befehl:
javap Test
Es gibt aus folgenden Ausgabe:
public class Test {
public Test();
public static void main(java.lang.String[]);
}
So, Sie können sehen, dass String
Typ mit seinem voll qualifizierten Namen java.lang.String
ersetzt wird, und es gibt keine Import-Anweisung in Byte-Code.
Vielen Dank, Sir! –
Diese Antwort macht für mich Sinn, aber ich habe Probleme in meinem Java-Projekt gehabt, die dem zu widersprechen scheinen. Ich kann eine Klasse kompilieren, ein Programm ausführen, das einige Importe und ihre Referenzen verschleiern kann, damit es mit einem anderen verschleierten Code funktioniert, dann diese Klasse dekompilieren und einige Importanweisungen für die alten, jetzt verschleierten Klassen sehen. Wenn diese Klassen nie mehr im Code verwendet werden, wie erhält der Decompiler diese Importanweisungen? Sollten sie nicht in der Zusammenstellung verloren gegangen sein? (Soll ich das als neue Frage posten?) – Variadicism
Macht nichts. Vergiss es. Ich glaube, der Rebuscator macht nur einen halben Job. Ich glaube, deshalb sind die Importaussagen immer noch da. Der Decompiler schreibt wahrscheinlich in diese Importanweisungen nur, um es schöner zu machen. – Variadicism
Nicht verwendete Importe haben keine Auswirkungen zur Laufzeit (weil im Byte-Code keine Importe enthalten sind). Nicht verwendete Importe beeinflussen jedoch den Compiler, aber nicht viel.
Im Allgemeinen führt das Importieren von nur dem, was Sie benötigen, zu verbesserter Wartbarkeit und Lesbarkeit des Codes.
Nein, der Compiler entfernt sie nach der Kompilierung. Aber zwei Problem kann man
- Code Krempel
- Gesicht Wenn Sie einige Klassen aus Glas importieren und später entfernt jar aber nicht Importen, dann können Sie Zeitfehler
keine Auswirkung zur Laufzeit erhalten kompilieren. Es kann den Kompilierungsvorgang ein sehr kleines Bit (nicht messbar) langsamer machen. Aber so weit wie sie zu haben, ist es besser, sie zu entfernen, weil es die Dateien kleiner macht und es einfacher zu lesen, welche Importe tatsächlich verwendet werden.
+1 für den selbst dokumentierenden Aspekt. Das war immer der Hauptgrund für explizite Importe von nur Klassen, die verwendet werden. –
Keine Auswirkung jeder rumtime-Compiler Zeit,
aber beste Ansatz ist die klarste und einfachste Code möglich zu schreiben, da dies die Wartbarkeit des Codes verbessert und hilft sicherzustellen, es recht gut, auch wenn er ausführt, ist geändert.
Dokumentation: Best Practices for Performance
- 1. Nicht verwendete Importanweisungen in Java finden Quelle
- 2. Speichert Klassenmitglieder Speicher?
- 3. Speichert express.static() Dateien im Speicher?
- 4. Wie speichert man Baumstrukturen in Java?
- 5. Java nicht Müll sammeln Speicher
- 6. Nicht verwendete Klassen in einem Java Eclipse-Projekt finden
- 7. Nicht verwendete Variablen in PyCharm
- 8. Speichert MemoryDC Speicher oder den Speicher auf der Grafikkarte?
- 9. Java - Speicher Zeit (nicht Intervall)
- 10. Warum speichert der Python __slots__ keinen Speicher?
- 11. Deaktivieren Sie eine nicht verwendete Variable Warnung
- 12. Wie speichert C verschiedene Datentypen im Speicher?
- 13. Java speichert Benutzereinstellungen
- 14. Java var aus Anweisung speichert nicht
- 15. Zeigt eine Java App die verwendete Version an?
- 16. Wie speichert man einen Verweis auf eine Klasse in Java?
- 17. Wie man ein Objekt dauerhaft im Speicher mit Spark speichert?
- 18. Wie speichert man eine Datei in Bits mit Java?
- 19. Java speichert Informationen in ein Objekt
- 20. Fread-Funktion, die nicht in Puffer speichert
- 21. Wie kann der von C/C++/Java verwendete Speicher während der Ausführung gemessen werden?
- 22. Kann eine bereits verwendete Datei in VB.NET geklont werden?
- 23. Java speichert zwei Ints in einem langen
- 24. Java netbeans nicht genug Speicher zum kompilieren
- 25. Django löschen nicht verwendete Mediendateien
- 26. Nicht verwendete Variablen in CakePHP-Ansichten finden
- 27. Nicht verwendete Zeichen in der Zeichenfolge abrufen?
- 28. Nicht verwendete Argumente Fehler in R-Studio
- 29. Warnungen über nicht verwendete Variablen in Erlang
- 30. Falsche nicht verwendete Importanweisung in PyCharm?
Mögliche Duplikat von [Enthält nicht genutzten Ein- und Objekte haben eine Auswirkung auf die Leistung] (http://stackoverflow.com/questions/8724045/does-unused-import-and -objects-have-an-performance-impact) – jonayreyes