Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP变量和内存泄漏_Php_Performance_Memory_Memory Management_Memory Leaks - Fatal编程技术网

PHP变量和内存泄漏

PHP变量和内存泄漏,php,performance,memory,memory-management,memory-leaks,Php,Performance,Memory,Memory Management,Memory Leaks,在PHP中编码时是否可能造成内存泄漏 在遍历大型循环构造时,我的性能似乎变得非常慢 我应该取消设置()我不使用的变量吗?PHP没有垃圾收集器(尽管从PHP5.3开始就有)。它使用引用计数来管理内存。因此,最常见的内存泄漏源是循环引用和全局变量 最简单的工具是有选择地调用内存,并将其缩小到代码泄漏的地方。您还可以使用xdebug创建代码跟踪 使用执行跟踪运行代码并显示_mem_delta 要阅读PHP5.3+中有关垃圾收集的更多信息,请参阅 PHP5.3+ 在PHP5.3+中,可以在三个主要位置执

在PHP中编码时是否可能造成内存泄漏

在遍历大型循环构造时,我的性能似乎变得非常慢


我应该取消设置()我不使用的变量吗?

PHP没有垃圾收集器(尽管从PHP5.3开始就有)。它使用引用计数来管理内存。因此,最常见的内存泄漏源是循环引用和全局变量

最简单的工具是有选择地调用内存,并将其缩小到代码泄漏的地方。您还可以使用xdebug创建代码跟踪

使用执行跟踪运行代码并显示_mem_delta

要阅读PHP5.3+中有关垃圾收集的更多信息,请参阅

PHP5.3+

在PHP5.3+中,可以在三个主要位置执行垃圾收集(还有其他位置):

1.当你告诉它时。就像使用unset()或mysql\u free\u result()一样

2.离开函数时清除任何离开作用域的变量


3.当脚本结束时…很明显

PHP没有垃圾收集器(尽管在PHP5.3中有)。它使用引用计数来管理内存。因此,最常见的内存泄漏源是循环引用和全局变量

最简单的工具是有选择地调用内存,并将其缩小到代码泄漏的地方。您还可以使用xdebug创建代码跟踪

使用执行跟踪运行代码并显示_mem_delta

要阅读PHP5.3+中有关垃圾收集的更多信息,请参阅

PHP5.3+

在PHP5.3+中,可以在三个主要位置执行垃圾收集(还有其他位置):

1.当你告诉它时。就像使用unset()或mysql\u free\u result()一样

2.离开函数时清除任何离开作用域的变量


3.当脚本结束时…非常明显

如果PHP本身没有bug,那么PHP脚本中不可能发生内存泄漏。


内存清理由管理员为您完成。虽然它在大多数情况下都可以很好地工作,而无需程序员的任何努力,但它可以使用一组函数进行控制

如果PHP本身没有bug,那么PHP脚本中就不可能发生内存泄漏。


内存清理由管理员为您完成。虽然它在大多数情况下都可以很好地工作,而无需程序员的任何努力,但它可以使用一组函数进行控制

是的,Php中可能存在内存泄漏,
判断O(n)循环中是否存在内存泄漏的一个基本方法是查看循环时间是否与对象数量成正比,例如,100个对象比10个对象的循环长10倍左右。如果循环对于100个对象长得多,则可能存在内存泄漏。

是的,Php中可能存在内存泄漏,
判断O(n)循环中是否存在内存泄漏的一个基本方法是查看循环时间是否与对象数量成正比,例如,100个对象比10个对象的循环长10倍左右。如果循环对于100个对象长得多,则可能存在内存泄漏。

从PHP5.3中,垃圾收集器可以检测循环引用,请参阅

您可以使用以下命令强制收集循环:


所有这些函数都有很大的成本,所以请谨慎使用,在大多数情况下,让php为您这样做,这是他的工作:)

从PHP5.3垃圾收集器可以检测循环引用,请参阅

您可以使用以下命令强制收集循环:


所有这些函数都有很大的成本,所以请谨慎使用,在大多数情况下,让php为您这样做,这是他的工作:)

我们可以看一些代码吗?您甚至可以确定内存泄漏是问题所在,而不仅仅是低效的代码吗?在循环中,对每个实例使用相同的变量。如果将
构造
引用为类实例化,请使用单例或在循环上方实例化一个类。通常问题是代码。我将尝试并制定一个代码示例。我们可以看到一些代码吗?您甚至可以确定内存泄漏是问题所在,而不仅仅是效率低下的代码吗?在循环中,对每个实例使用相同的变量。如果将
构造
引用为类实例化,请使用单例或在循环上方实例化一个类。通常问题在于代码。我将尝试制定一个代码示例,您已经引用了《php开发指南》中的扩展开发人员指南。扩展是用C语言编写的。问题是关于PHP代码的。您已经引用了PHP开发人员指南。扩展是用C编写的。问题是关于PHP代码的。非常详细的示例感谢您投入时间进行编辑。非常详细的示例感谢您投入时间进行编辑。