91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang的堆棧是什么?怎么用

發布時間:2020-06-17 11:13:04 來源:億速云 閱讀:727 作者:Leah 欄目:編程語言

golang的堆棧是什么?怎么用?這些問題可能是我們日常工作會見到的。通過這些問題,希望你能收獲更多。下面是揭開這些問題的詳細內容。

數據結構的堆棧:

堆:堆可以被看成是一棵樹,如:堆排序。在隊列中,調度程序反復提取隊列中第一個作業并運行,因為實際情況中某些時間較短的任務將等待很長時間才能結束,或者某些不短小,但具有重要性的作業,同樣應當具有優先權。

堆即為解決此類問題設計的一種數據結構。

棧:一種先進后出的數據結構。

堆棧緩存方式

棧使用的是一級緩存, 他們通常都是被調用時處于存儲空間中,調用完畢立即釋放。

堆則是存放在二級緩存中,生命周期由虛擬機的垃圾回收算法來決定(并不是一旦成為孤兒對象就能被回收)。所以調用這些對象的速度要相對來得低一些。

堆棧跟蹤

下面討論堆棧跟蹤信息以及如何在堆棧中識別函數所傳遞的參數。

以下測試案例的版本是Go 1.11

示例:

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(),這會立即產生一個堆棧跟蹤信息:

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

堆棧跟蹤信息:

第一行顯示運行的goroutine是id為 1的goroutine。

第二行 debug.Stack()被調用

第四行 debug.PrintStack() 被調用

第六行 調用debug.PrintStack()的代碼位置,位于main package下的Example函數。它也顯示了代碼所在的文件和路徑,以及debug.PrintStack()發生的行數(第10行)。

第八行 也調用Example的函數的名字,它是main package的main函數。它也顯示了文件名和路徑,以及調用Example函數的行數。

關于golang的堆棧介紹就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

双牌县| 荆门市| 资讯| 县级市| 喜德县| 克东县| 庆城县| 全椒县| 贡觉县| 泽州县| 东山县| 广东省| 文化| 沽源县| 馆陶县| 汤原县| 西峡县| 平邑县| 瑞金市| 莆田市| 大余县| 大港区| 湟源县| 大新县| 阳东县| 江都市| 彩票| 合江县| 永嘉县| 陵川县| 昆明市| 集贤县| 布拖县| 应城市| 荃湾区| 桂平市| 祁门县| 辰溪县| 太和县| 神木县| 棋牌|