IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:内存泄漏

共 3 篇相关文章

IT 累计浏览 1,998

浅析 JavaScript 中的 “闭包”

这篇讲的是JavaScript中一个既重要又容易让人困惑的概念——闭包。作者没有直接抛出定义,而是从维基百科和百度百科两种不同的解释视角切入,对比了其理论抽象与编码实体的侧重点,巧妙地引出了核心问题:闭包在JS中究竟是什么? 要理解闭包,必须先理解JS独特的“函数级作用域”。文章通过清晰的代码示例,指出JS没有块级作用域,这意味着if、for等花括号并不能创建独立的变量空间,与Java、C++等语言行为迥异。在解释了函数作用域后,文章指出,当内部函数引用了外部函数的变量时,闭包便自然产生。最经典的莫过于for循环与setTimeout结合的案例:由于异步执行,回调函数共享同一个最终的循环变量i。文章解析了用立即执行函数(IIFE)为每次循环创建独立作用域的经典解决方案,正是通过闭包“捕获”并保存了当时的变量值。 最终让读者明白,闭包不是刻意为之的“黑魔法”,而是理解JS作用域链和执行上下文后,解决特定作用域问题的自然工具。

IT 累计浏览 2,404

记一次内存泄露的debug过程

这篇讲的是作者在压测“代码在线运行”工具时,遭遇了高并发下内存飙升且无法回落的问题。从自身代码审查无果,他转向使用Go语言内置的pprof工具进行深度剖析。 通过分析堆内存分配的热点,问题指向了goroutine与ioPipe的交互。作者进一步验证,发现大量goroutine因ioPipe未被正确关闭而持续存在,无法回收,从而造成了内存的持续累积。根源在于异常退出前未主动关闭资源。 定位后,解决方案变得清晰:在程序逻辑中确保主动关闭ioPipe的Reader。修复后,作者使用wrk工具进行了长时间压测,并监控goroutine数量,确认内存占用稳定,问题得以解决。文章结尾点出,这个因粗心引起的小bug,修复却需借助专业工具链,提醒开发者熟悉语言提供的诊断工具至关重要。

IT 累计浏览 3,187

最近遇到的问题整理(linux下创建线程内存泄漏,php的json_encode等)

这篇文章是作者近期在开发运维中遇到的几个实际问题的复盘与整理,核心聚焦于两个典型技术坑点的排查与解决。 第一个问题是关于Linux下创建线程时发生的内存泄漏。作者没有停留在表面,而是深入分析了根因,发现是由于线程属性设置不当导致的。文章详细说明了正确的创建方式,比如如何通过`pthread_attr_setstacksize`来合理分配栈空间,从而避免资源无谓的消耗。 第二个常见于PHP开发中。作者指出,当使用`json_encode`处理包含非UTF-8编码字符(如GBK)的字符串时,很容易因编码转换问题导致输出不符合预期甚至报错。文章给出了明确的解决方案,即先用`mb_convert_encoding`统一转码为UTF-8,再进行JSON序列化,这个细节对许多开发者都有实用价值。 此外,作者也一并解释了近期博客RSS/Atom订阅源(feeds)更新延迟的后台原因,让读者了解问题全貌。 整体来看,这篇不是空泛的理论,而是来自一线的问题诊断手册,涵盖了从系统编程到Web开发的具体陷阱及其修复路径,对遇到类似状况的工程师有直接的参考价值。