扫码关注官方订阅号
php在作为消费者进行消费的时候,常用方法都是写死循环,有时候会产生内存溢出的问题。这里写了一个测试代码,
代码如下:
第一、二中写法的截图:
第三种写法的截图:
很好奇,为什么第一、二写法不会产生内存溢出呢?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
这是因为前两个循环中创建的对象在循环完成一次后就没有用了,可以被垃圾回收机制回收内存,因此不会出现溢出。而第三种因为每次循环结束都会设置一下$i这个数组,数组$i的生命周期没有结束,持有对每一个Test对象的引用,造成创建的Test对象无法被垃圾回收机制回收,创建的太多了,内存占用就会越来越大,最终就内存溢出了。
第三种肯定会溢出,只是时间的问题,随着变量i增大,内存肯定不够,平常遇到大数组都是用完手动unset掉或者尽量分批操作
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这是因为前两个循环中创建的对象在循环完成一次后就没有用了,可以被垃圾回收机制回收内存,因此不会出现溢出。而第三种因为每次循环结束都会设置一下$i这个数组,数组$i的生命周期没有结束,持有对每一个Test对象的引用,造成创建的Test对象无法被垃圾回收机制回收,创建的太多了,内存占用就会越来越大,最终就内存溢出了。
第三种肯定会溢出,只是时间的问题,随着变量i增大,内存肯定不够,平常遇到大数组都是用完手动unset掉或者尽量分批操作