Von Zeit zu Zeit stelle ich mit den Konzepten wie Null Müll oder effiziente Nutzung von Speicher usw. Als Beispiel im Abschnitt Features der bekannten Paket httprouter können Sie Folgendes sehen:Golang. Zero Müllverbreitung oder effiziente Nutzung von Speicher
Null Garbage: gesuchter und Abfertigungs-Prozess erzeugt Null-Bytes von Müll. Die einzigen Heapzuweisungen, die vorgenommen werden, bestehen darin, das Segment der Schlüssel/Wert-Paare für Pfadparameter zu erstellen. Wenn der Anforderungspfad keine Parameter enthält, ist keine einzelne Heapzuweisung erforderlich.
Auch zeigt dieses Paket sehr gute Benchmark-Ergebnisse im Vergleich zu Standard http.ServeMux Bibliothek:
BenchmarkHttpServeMux 5000 706222 ns/op 96 B/op 6 allocs/op
BenchmarkHttpRouter 100000 15010 ns/op 0 B/op 0 allocs/op
Soweit ich die zweiten hat verstehen (aus der Tabelle) keine Heap-Speicherzuweisung und Null Durchschnitt Anzahl der Zuweisungen pro Wiederholung.
Die Frage: Ich möchte ein grundlegendes Verständnis der Speicherverwaltung lernen. Wenn der Garbage Collector zuweist, wird Speicher freigegeben. Was bedeuten die Benchmark-Zahlen (die letzten beiden Spalten der Tabelle) und wie wissen die Leute, wann der Heap zuweist?
Ich bin absolut neu in der Speicherverwaltung, also ist es wirklich schwierig zu verstehen, was "unter der Haube" passiert. Die Artikel, die ich gelesen habe:
- https://golang.org/ref/mem
- https://golang.org/doc/effective_go.html
- http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html
- http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
@OP - "Nacharbeiten" heißt in diesem Fall, dass es Zeiten gibt, in denen Variablen während der Escape-Analyse nicht entkommen können - und das Go-Team ist sich dessen bewusst. Das bedeutet, dass Sie Heap-Zuweisungen erhalten, wenn Sie wirklich eine Stack-Zuweisung erhalten sollten. Irgendwo gibt es ein faszinierendes Dokument (ich kann es im Moment anscheinend nicht auf Go-Dev finden)."Escape-Analyse" wird der Begriff für Ihre Forschung hilfreich sein. Schöne Antwort Volker :) –