Gehen Sie zur Analyse des Heap-/Stack-Speichers

In der Go-Sprache wird durch die vom Compiler während der Kompilierungsphase durchgeführte „Escape-Analyse“ bestimmt, ob eine Variable auf dem Stapel oder auf dem Heap zugewiesen wird. Wenn eine Variable nur innerhalb des Funktionsumfangs verwendet wird, wird sie häufig auf dem Stapel zugewiesen. Wenn eine Variable extern referenziert oder außerhalb der Funktion zurückgegeben wird, kann sie in den Heap „entkommen“.

Um die Ergebnisse der Escape-Analyse für ein Go-Programm anzuzeigen, können Sie beim Erstellen des Programms Optionen verwenden -gcflags='-m'. Zum Beispiel:

go build -gcflags='-m' main.go

Der Compiler gibt Informationen darüber aus, wie Variablen zugewiesen werden. Beispielsweise könnten wir eine Ausgabe ähnlich der folgenden sehen:

./main.go:9:6: can inline foo with cost 5 as: ...
./main.go:14:9: &x escapes to heap
./main.go:14:9: 	from ~r0 (return) at ./main.go:15:2

Die obige Ausgabe zeigt, dass in Zeile 14 von main.go die Variable x auf den Heap entkommt.

おすすめ

転載: blog.csdn.net/qq_35760825/article/details/131939811