PHP手动释放内存

写在最前面

如果你买了一本PHP的书, 它告诉你: "不用在PHP主动释放资源, 因为PHP会帮你释放"的话, 我建议你, 烧了它.

​请手动释放你的资源(Please release resources manually)​

问题

内存使用:2259.38M, pid:62602, 类名:app\report\task\ReportSalesDailyByEditorTask:6553, 服务器:common, 请相关人员处理。

一段报表的循环代码占用了2.2G内存

/**
* 手动释放资源
*/
$allJobUser = null;

每个select查询结果的地方都手动释放了一下,内存使用量一下子降到512M以下

测试代码

<?php

 $s = str_repeat('1',1024);     

 $b = &$s;        

 $mem_1 = memory_get_usage(); //获取当前占用内存   

 echo $mem_1 . "<br>";      

 unset($s);      

 // $s = null;       

 $mem_2 = memory_get_usage(); // 再查看当前占用内存      

echo $mem_2 . "<br>";          

echo $mem_1 - $mem_2 ;

结果分析

1、将 $s = null 注释

237280

237328

-48

2、将 unset 注释

237680

236768

912

结论

1. unset只是变量计数器减1,,当计数器为0的时候会触发回收

2. $s=null 会直接触发回收

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值