管理PHP数组中字符串使用的内存的最佳方法是什么?

管理PHP数组中字符串使用的内存的最佳方法是什么?,php,arrays,memory-management,memory-leaks,unset,Php,Arrays,Memory Management,Memory Leaks,Unset,在PHP中,我使用数组来创建网站HTML网页的内容。我也在使用symfony2,但不是twig。这是一个创建简单的半唯一页面的示例: $strMAINs = []; $r = rand( 1, 99999 ); // $r needs to be generated on the server for some // reason, so can't generated by the client and the

在PHP中,我使用数组来创建网站HTML网页的内容。我也在使用symfony2,但不是twig。这是一个创建简单的半唯一页面的示例:

$strMAINs = [];

$r          = rand( 1, 99999 ); // $r needs to be generated on the server for some
                                // reason, so can't generated by the client and then
                                // sent back when the form that contains this code is
                                // submitted.  Why isn't important.

$strMAINs[] = '<table>';
$strMAINs[] =   '<tr>';
$strMAINs[] =     '<td>';
$strMAINs[] =       'Input a number from 1 to 99,999:';
$strMAINs[] =     '</td>';
$strMAINs[] =     '<td>';

                    // Create a random default value ...
$strMAINs[] =       '<input id="TextInput" value="' . $r . '" />';

$strMAINs[] =     '</td>';
$strMAINs[] =   '</tr>';
$strMAINs[] = '</table>';

$strMAIN = implode( PHP_EOL, $strMAINs );

// Note, in my web-app the strings can be a lot longer.

// Send the content $strMAIN to the browser using the appropriate Symfony 2 function.
$strMAINs=[];
$r=兰特(199999);//$需要在服务器上生成一些
//原因,所以不能由客户端生成,然后
//当包含此代码的表单被删除时发送回
//提交。为什么不重要。
$strMAINs[]='';
$strMAINs[]='';
$strMAINs[]='';
$strMAINs[]=“输入一个从1到99999的数字:”;
$strMAINs[]='';
$strMAINs[]='';
//创建一个随机默认值。。。
$strMAINs[]='';
$strMAINs[]='';
$strMAINs[]='';
$strMAINs[]='';
$strMAIN=内爆(PHP_EOL,$strMAIN);
//注意,在我的web应用程序中,字符串可能要长得多。
//使用相应的Symfony 2功能将内容$strMAIN发送到浏览器。
此时,当拥有这些变量的父函数退出时,我可以让Symfony/PHP释放/回收$strMAIN字符串和$strMAINs数组字符串使用的内存,并让垃圾收集器自己处理内存,或者在$strMAINs数组上使用unset命令,但不是$strMAIN,因为它需要Symfony函数的值,该函数将页面发送到浏览器

然而,从我对unset命令的了解来看,unset命令中的变量似乎确实释放了它们的内存,但在垃圾收集器开始工作之前,我的站点的其他用户不一定可以使用它们

我还担心内存泄漏


在查看PHP unset命令时,我发现将数组设置为NULL可能会导致内存释放和可用速度更快。

这就是自动内存管理的工作原理。无论您如何释放数据,在GC清理数据之前,数据都不可用。不用担心,GC会在需要时运行。就内存管理而言,使用
unset
、assign
null
或超出变量范围都无关紧要。回收内存仍然是垃圾收集器的责任。PHP使用引用计数,因此当引用被破坏时,没有循环引用可能性的数据可以立即回收,而不必等待GC。字符串不能循环引用。