golang的堆栈怎么看


本文摘自php中文网,作者(*-*)浩,侵删。

数据结构的堆栈:

堆:堆可以被看成是一棵树,如:堆排序。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。

堆即为解决此类问题设计的一种数据结构。 (推荐学习:go)

栈:一种先进后出的数据结构。

堆栈缓存方式

栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。

堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

堆栈跟踪

下面讨论堆栈跟踪信息以及如何在堆栈中识别函数所传递的参数。

以下测试案例的版本是Go 1.11

示例:

1

2

3

4

5

6

7

8

9

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()

}

列表1是一个简单的程序, main函数在第5行调用Example函数。Example函数在第9行声明,它有三个参数,一个字符串slice,一个字符串和一个整数。它的方法体也很简单,只有一行,debug.PrintStack(),这会立即产生一个堆栈跟踪信息:

阅读剩余部分

相关阅读 >>

聊聊dubbo-go-proxy的jtypes

go语言都用什么框架

解析go中的多态 -无需interfaces

【gocn酷go推荐】go程序配置利器-viper库

go后offer之路上的那些真相

golang怎么判断字符串是否为空

一周 go world 新鲜事

golang usr/local/go/pkg/tool/linux_amd64/link: fingerprint mismatch 解决办法

golang能封装成dll吗

马士兵【mca】高级架构师分享学习

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...