PHP   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP是否根据其限制动态处理内存使用情况?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
PHP的memory_limit在运行时间大约25秒时设置为50M时,我有一个成功运行的脚本.当我在脚本末尾打印memory_get_peak_usage时,它非常接近50m.当我将memory_limit设置为更高,为90M时,memory_get_peak_usage显示大约75M,脚本加载大约10秒.

看起来直观的是,无论memory_limit如何,脚本都会使用大约相同数量的内存,但似乎并非如此.如果脚本最大不超过50M,限制为50M,我原本预计即使memory_limit增加,峰值使用率仍然相同.

我唯一的解释是PHP认识到它接近极限并花费时间清除未使用的内存以避免达到限制.这是它实际工作的方式还是我只是划破了更大的表面?

你看到的是垃圾收集器正在完成它的工作.

重新定义非原始变量值时,旧值不会立即从内存中丢弃.它仍然存在,作为脚本内存使用的一部分.

只有当您的脚本危险地接近其内存限制时,才会调用垃圾收集器来清理那些未使用的已分配内存片段,以便为脚本释放更多空间.这个过程非常顺畅,这也就是为什么脚本运行速度更快,内存更多 – 垃圾收集器不需要经常使用.

编辑:

缓冲也参与其中.如果您的脚本正在向文件写入大量数据,则此数据首先在内存中排队,因为您的硬盘将无法像生成此数据那样快速地写入此数据.如果生成数据的速度比磁盘写入速度快得多,最终可用内存将会填满,下次尝试fwrite()或使用任何将数据放入缓冲区的函数时,程序将被强制等待.

大佬总结

以上是大佬教程为你收集整理的PHP是否根据其限制动态处理内存使用情况?全部内容,希望文章能够帮你解决PHP是否根据其限制动态处理内存使用情况?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。