Heim >Java >javaLernprogramm >Erzeugen Lambda-Ausdrücke in Java immer einen erheblichen Heap-Overhead?
Heap-Speicherplatz und Lambda-Ausdrucksauswertung
Das Durchlaufen von Sammlungen mit der Lambda-Syntax von Java 8 wirft Bedenken hinsichtlich eines möglichen Speicheraufwands im Vergleich zur herkömmlichen Schleifensyntax auf . In diesem Fall:
myStream.forEach(item -> { // do something useful }); // Equivalent Old Syntax: myStream.forEach(new Consumer<Item>() { @Override public void accept(Item item) { // do something useful } });
Erstellen Lambda-Ausdrücke bei jedem Aufruf Heap-Objekte?
Ja, Lambda-Ausdrücke erstellen möglicherweise anonyme Klasseninstanzen. Das Verhalten ist jedoch implementierungsspezifisch. Die JVM von Oracle erstellt normalerweise Singletons für Lambda-Ausdrücke, die keine Werte erfassen.
Speicherverbrauch und Leistung
Das Erstellen von Heap-Objekten kann sich auf die Leistung und Speichernutzung auswirken, insbesondere beim Umgang mit große und komplexe Datenstrukturen. Das Ausmaß dieses Overheads hängt jedoch von mehreren Faktoren ab:
Sollten Sie traditionell bevorzugen? Schleifen?
Die Verwendung herkömmlicher Schleifen zum Durchlaufen großer mehrstufiger Datenstrukturen kann in einigen Fällen immer noch bevorzugt werden, insbesondere wenn die Lambda-Ausdrücke komplexe oder große Objekte erfassen. Es ist jedoch wichtig zu beachten, dass:
Das obige ist der detaillierte Inhalt vonErzeugen Lambda-Ausdrücke in Java immer einen erheblichen Heap-Overhead?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!