php 执行mysql中查询时内存溢出怎么办

 我来答
顾宸666
2017-08-07 · TA获得超过149个赞
知道答主
回答量:253
采纳率:0%
帮助的人:69.4万
展开全部
不要一次性从数据库中读出所有数据,例如使用原生PDO时,不要使用$db->query($sql)->fetchAll(); 方法,题主使用的ThinkPHP框架中,不要使用ORM模型的select()方法
爱可生云数据库
2020-09-24 · MySQL开源数据库领先者
爱可生云数据库
爱可生,金融级开源数据库和数据云服务整体解决方案提供商;优秀的开源数据库技术,企业级数据处理技术整体解决方案提供商;私有云数据库云服务市场整体解决方案提供商。
向TA提问
展开全部

内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。因为内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏通常不会直接产生可观察的错误症状,而是逐渐积累,降低系统整体性能,极端的情况下可能使系统崩溃。

Valgrind 是一个用于构建动态分析工具的工具框架。它提供了一组工具,每个工具都执行某种调试、分析或类似的任务,以帮助您改进程序。Valgrind 的体系结构是模块化的,因此可以轻松地创建新工具,而不会影响现有的结构。

标配了许多有用的工具:

  • Memcheck 是内存错误检测器。

  • Cachegrind 是一个缓存和分支预测探查器。

  • Callgrind 是一个生成调用图的缓存分析器。

  • Helgrind 是线程错误检测器。

  • DRD 还是线程错误检测器。

  • Massif 是堆分析器。

  • DHAT 是另一种堆分析器。

  • SGcheck 是一种实验性工具,可以检测堆栈和全局阵列的溢出。

  • BBV 是一个实验性 SimPoint 基本块矢量生成器。

  • 关于内存泄漏,我们需要使用 valgrind 的默认工具,也就是 memcheck 工具。

  • Memcheck 是内存错误检测器。它可以检测以下和内存相关的问题:

  • 使用未初始化的内存

  • 读取/写入已释放的内存

  • 读取/写入 malloc 块的末端

  • 内存泄漏

  • 对 malloc/new/new[]与free/delete/delete[] 的不匹配使用

  • 双重释放内存

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式