清除 php v5.6 字符串数组时防止内存丢失的最佳方法是什么?



为了防止内存丢失和内存"瓶颈",我目前正在使用以下方法清除/"标记为释放"字符串数组中的内存:

//
// Clear each of the possibly thousands of long strings contained in the
// $strMAINs array elements and mark them for subsequent memory release.
// No other variables reference the strings in this array.
//
for( $c = ( count( $strMAINs ) - 1 ); $c >= 0; --$c ) {
$strMAINs[  $c ] = '';
unset( $strMAINs[  $c ] );
}
//
// Do the same for the overall array, unless the array is to reused before
// the overall code execution is complete.
//
$strMAINs = '';
unset( $strMAINs );
//
// Make an empty array with the same variable name available for subsequent
// use.
//
$strMAINs = [];  // Actually, this isn't needed.  Just don't clear the whole
// variable so the array can be reused! 

但是,在上面的代码块结束时,$strMAINs数组随后被重新赋值一个新的空,以便此变量准备好使用后续赋值

$strMAINs[] = some string value or string variable;

我看到了关于这个主题的其他问题,建议只使用 unset( $variable(;,但答案并没有解决数组unset不会立即释放内存,而是推迟到代码执行结束或内存变得足够低以导致垃圾收集发生,我认为后者对性能有很大的影响,因为它必须"寻找"尽可能多的待处理不再使用的变量内存它可以找到,而任何明确"标记为已发布">的变量可能更容易找到,如果在释放后足以消除整体内存不足的情况,则会优化垃圾收集操作。

所以,这给我留下了几个问题:

  1. 将空字符串''NULL分配给 每个元素何时将新值分配给元素? 但是,不一定相同数量的元素,可以更少 或更多。

  2. 如果元素赋值循环确实有帮助,有没有更好的 PHP 函数/语句来做同样的事情,内化 在单个PHP中执行整个循环和赋值 解释器处理步骤而不是一系列单独的 解释/执行然后单独处理的步骤? 或者,是$strMAINs = [];赋值语句最好,没有风险 记忆丧失并快速释放旧元素持有的内存 减少垃圾时Web服务器陷入困境的频率 发生收集。

谢谢

当您将某些内容分配给变量时,如果它是空字符串、空值或空值,则会在内存中定义某些内容。

unset强制立即释放内存。垃圾回收器完成其余的工作。因此,当您有一个数组并想要释放内存时,请取消设置该元素。

相关内容

最新更新