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

标签:内存分配

共 2 篇相关文章

IT 累计浏览 2,509

zend php 动态数组

这篇讲的是如何从Zend PHP源码中学习动态数组的C语言实现。作者从C语言静态数组长度固定的痛点切入,指出在很多场景下我们无法预先知道数据规模,但又不想浪费内存预分配一个过大的数组。解决思路就是动态数组:先用malloc分配一块连续内存,通过指针像操作数组一样访问;当空间不足时,用realloc进行扩容(它会保留原有数据)。 文章的核心部分是剖析Zend PHP中动态数组的具体实现。作者展示了完整的头文件和源码,包括初始化、插入、获取、销毁等关键操作。其实现很巧妙:用一个结构体封装数组指针、元素大小、当前元素数和已分配容量;在push时,如果当前容量已满,就将容量翻倍进行realloc,确保了均摊下的高效插入;通过元素大小和偏移量计算,可以泛型地支持任意类型的数组。文末通过一个读取输入并输出的对比实验,直观展示了静态数组(固定缓冲区可能截断数据)和动态数组(随输入自动增长)在实际应用中的行为差异。

IT 累计浏览 6,822

分析进程内存分配情况,解决程序性能问题

作者以一个MySQL进程的内存问题排查为例,演示了如何通过分析内存分配来定位和解决程序性能瓶颈。当进程响应变慢、资源占用异常时,仅靠top或htop等概览工具往往难以触及问题核心。 这篇内容切入实际场景,利用内存分配跟踪工具深入到进程内部。作者详细展示了如何解读内存分配的数据,指出了一个具体案例中观察到的内存分片异常膨胀现象,这正是导致性能下降的根因。文章没有停留在理论,而是给出了具体的分析步骤和数据解读方法。 基于定位到的问题,作者采取了针对性的调整措施,并最终解决了性能问题,恢复了服务的流畅运行。整个排查过程清晰地展示了从现象到本质的推理链条,对于遇到类似内存相关性能问题的开发者,提供了一套可复用的诊断思路和实践参考。