共 7 篇文章
Go 语言 Goroutine 泄露:实战案例分析与排查指南
在 Go 语言开发中,Goroutine 泄露是一个非常隐蔽但致命的问题。它通常发生在一个 Goroutine 被启动后,因为某种逻辑阻塞(比如等待一个永远不会关闭的 Channel 或获取不到锁)而永远无法结束,导致内存逐渐耗尽。
和内存泄漏不同,Goroutine 泄露更难发现——因为 Goroutine 本身占用很小(通常只有几 KB),但成千上万个泄露的 Goroutine 会形成"蚂蚁搬家"效应,最终拖垮整个服务。
本文将分享 4 个实战中非常典型的 Goroutine 泄露案例,并提供排查工具和预防原则。
Go 1.26 栈内存优化:深入理解 slice 的栈分配与逃逸
Go 语言以高效的垃圾回收(GC)著称,但在追求极致性能的路上,内存分配始终是绕不开的话题。2026年2月发布的 Go 1.26 带来了一个重要的编译器优化:现在可以在更多情况下将 slice 的后备存储分配在栈上,而不是堆上。
这意味着当你在函数内创建一个 slice 时,如果它不会逃逸出函数作用域,Go 1.26 会直接把它放在栈上,无需经过堆分配。这不仅减少了 GC 压力,还提升了缓存局部性,是一个"免费"的性能提升。本文将深入讲解栈与堆的区别、逃逸分析的原理,以及如何写出更高效的 Go 代码。
Golang 值传递与引用传递深度解析
在 Golang 中,函数之间传递变量时总是以值的方式传递的。无论是 int、string、bool、array 这样的内置类型,还是 slice、map、channel 这样的引用类型,在函数间传递变量时,都是以值的方式传递。
PHP 7 安装和开启 OPcache
鸟哥在博客中说,提高PHP 7性能的几个tips,第一条就是开启OPcache:
记得启用Zend OPcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快
深入理解 PHP 内存管理:栈、堆与 zval 机制
PHP 是一种脚本语言,在运行时会将代码加载到内存中执行。理解 PHP 的内存管理机制,对于写出高效的 PHP 代码至关重要。本文将深入探讨 PHP 中的栈(Stack)、堆(Heap)以及 zval 内存管理机制。