はいそれは解放されます。
あなたは使用してこれを確認することができます。
function a() {
$var = "Hello World";
$content = "";
for ($i = 0; $i < 10000; $i++) {
$content .= $var;
}
print '<br>$content size:'.strlen($content);
print '<br>memory in function:'.memory_get_usage();
return null;
}
print '<br>memory before function:'.memory_get_usage();
a();
print '<br>memory after function:'.memory_get_usage();
出力:PHPが273312バイトを使用する前に機能
memory before function:273312
$content size:110000
memory in function:383520
memory after function:273352
を。
機能が終了する前に、再度メモリ使用量を確認し、383520を使用しました。
$ contentのサイズは110000バイトです。
273312 + 110000 = 383312
残りの208バイトは他の変数からのものです($ contentのみをカウントしました)
関数が終了した後、私たちは再びメモリ使用量をチェックし、(ほぼ(40バイトの違い))これまでと同じです。
40バイトの違いは、関数宣言とforループ宣言になりそうです。
*効率的に - あなたはそのように尋ねることはできません。あなたが考えるものは、効率的なものは何か(おそらくあなたのBTWの質問スタイルによって)実際にPHPが効率的に**何か*なるかもしれないということです。 – hakre
まあ、変数がもう使用されないことが明らかであるとすぐにやります。 –
さらに早く。関数が終了すると、すべてのローカル変数*はなくなります。データが(一時的に)メモリに留まるかどうかは重要ではありません。しかし、私が推測するメモリ管理についてもう少し知る必要があることを知るために、あなたの強み(嫌がらせをしないでください)ではありません。ローカル変数がもはや使用されていないため、システムからメモリブロックをすぐに割り当て解除するには高価になります。 – hakre