Golang-Coredump设置

定位crash问题少不了

June 14, 2022 · 3 min · Lambert Xiao

golang-pprof使用

pprof能做什么 pprof能提供正在运行的go程序的各项维度指标,可以帮助我们很好的了解程序的运行状态,如内存的使用,cpu的消耗,是否发现死锁等 pprof提供的profile profile 解释 cpu 默认进行 30s 的 CPU Profiling,得到一个分析用的 profile 文件 goroutine 查看当前所有运行的 goroutines 堆栈跟踪 block 查看导致阻塞同步的堆栈跟踪 heap 查看活动对象的内存分配情况 mutex 查看导致互斥锁的竞争持有者的堆栈跟踪 threadcreate 查看创建新OS线程的堆栈跟踪 怎么拿到对应的profile文件 当在服务里引入pprof包之后,可能通过http访问的方式拿到profile文件 wget - O analysis.pprof http://${ip}:${port}/debug/pprof/${profile} 怎么分析 以heap.pprof举例 // 查看常驻内存的使用情况 go tool pprof -inuse_space heap.pprof // 查看常驻对象的使用情况 go tool pprof -inuse_objects heap.pprof // 查看内存临时分配情况 go tool pprof -alloc_space heap....

June 8, 2022 · 2 min · Lambert Xiao

golang-runtime

func chansend(c *hchan, ep unsafe.Pointer, block bool, callerpc uintptr) bool func chanrecv(c *hchan, ep unsafe.Pointer, block bool) (selected, received bool) func deferproc(siz int32, fn *funcval)

March 25, 2022 · 1 min · Lambert Xiao

Golang-epoll

go怎么用的epoll

March 24, 2022 · 15 min · Lambert Xiao

Golang-函数栈帧布局

学会golang函数栈帧布局让你团灭各种defer面试题

March 12, 2022 · 4 min · Lambert Xiao

Golang-sync.Pool结构之poolDequeue

环形队列,无锁,CAS

March 9, 2022 · 5 min · Lambert Xiao

Golang-Defer底层实现机制

麻了呀,面试面到了答不出来

March 8, 2022 · 2 min · Lambert Xiao

Golang-Sync.Pool底层结构

sync.Pool在项目中被频繁用到,那么它底下是怎么实现的呢

March 8, 2022 · 7 min · Lambert Xiao

Golang-实现限流器

麻了呀,面试问到限流器相关的知识答不出来

March 8, 2022 · 7 min · Lambert Xiao

Golang-Channel的底层结构

一把锁+一个环形数组+两个等待队列

March 6, 2022 · 2 min · Lambert Xiao

Golang-小知识

面试前总得背一背吧

March 6, 2022 · 1 min · Lambert Xiao

Golang-线程模型

M(内核线程)、P(处理器)、G(协程)

March 6, 2022 · 1 min · Lambert Xiao

Golang垃圾回收

三色标记法

March 6, 2022 · 2 min · Lambert Xiao

TCMalloc

Golang的内存分配算法都是跟我学的

March 6, 2022 · 1 min · Lambert Xiao

Java和Golang的区别

Golang与Java的区别 1. 结构体 -> 类 // 包名即为包含该文件的目录名字 package collection // 声明一个结构体,类似Java中的类 type Stack struct { data []string } // 声明一个Push函数,并通过一个Stack的指针对象实现该方法 // 类似声明了Stack的成员方法 func (s *Stack) Push(x string) { s.data = append(s.data, x) } func (s *Stack) Pop() string { n := len(s.data) - 1 res := s.data[n] s.data[n] = "" // to avoid memory leak s.data = s.data[:n] return res } func (s *Stack) Size() int { return len(s.data) } 结构体对应Java里的类, 但结构体里只能有变量,不能有方法...

May 22, 2012 · 3 min · Theme PaperMod