Pile de structures de données :
Tas : Le tas peut être visualisé comme un arbre, tel que : tri par tas. Dans la file d'attente, le planificateur extrait à plusieurs reprises le premier travail de la file d'attente et l'exécute, car en réalité certaines tâches courtes attendront longtemps pour se terminer, ou certaines tâches qui ne sont pas courtes mais importantes devraient également avoir la priorité.
Heap est une structure de données conçue pour résoudre de tels problèmes. (Apprentissage recommandé : go)
pile : une structure de données premier entré, dernier sorti.
Méthode de mise en cache de la pile
La pile utilise un cache de premier niveau. Ils se trouvent généralement dans l'espace de stockage lorsqu'ils sont appelés et sont libérés immédiatement après l'appel. complété.
Le tas est stocké dans le cache de deuxième niveau et le cycle de vie est déterminé par l'algorithme de récupération de place de la machine virtuelle (une fois qu'il devient un objet orphelin, il peut être recyclé). Par conséquent, la vitesse d’appel de ces objets est relativement faible.
Stack Trace
Ce qui suit décrit les informations de trace de pile et comment identifier les arguments transmis à une fonction sur la pile.
La version du scénario de test suivant est Go 1.11
Exemple :
package main import "runtime/debug" func main() { slice := make([]string, 2, 4) Example(slice, "hello", 10) } func Example(slice []string, str string, i int) { debug.PrintStack() }
Le listing 1 est un programme simple, la fonction principale appelle la fonction Exemple à la ligne 5. La fonction Exemple est déclarée à la ligne 9. Elle a trois paramètres, une tranche de chaîne, une chaîne et un entier. Son corps de méthode est également très simple, avec une seule ligne, debug.PrintStack(), qui générera immédiatement une trace de pile :
goroutine 1 [running]: runtime/debug.Stack(0x1, 0x0, 0x0) C:/Go/src/runtime/debug/stack.go:24 +0xae runtime/debug.PrintStack() C:/Go/src/runtime/debug/stack.go:16 +0x29 main.Example(0xc000077f48, 0x2, 0x4, 0x4abd9e, 0x5, 0xa) D:/gopath/src/example/example/main.go:10 +0x27 main.main() D:/gopath/src/example/example/main.go:7 +0x79
Trace de pile :
One La ligne montre que la goroutine en cours d'exécution est la goroutine avec l'identifiant 1.
La deuxième ligne debug.Stack() est appelée
La quatrième ligne debug.PrintStack() est appelée
La sixième ligne appelle l'emplacement du code debug.PrintStack() , la fonction Exemple située sous le package principal. Il affiche également le fichier et le chemin où se trouve le code, ainsi que le numéro de ligne où se produit debug.PrintStack() (ligne 10).
La huitième ligne appelle également le nom de la fonction Exemple, qui est la fonction principale du package principal. Il affiche également le nom et le chemin du fichier, ainsi que le numéro de ligne où la fonction Exemple a été appelée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!