ホームページ > バックエンド開発 > PHPチュートリアル > PHP unset は変数を破棄し、メモリを解放します

PHP unset は変数を破棄し、メモリを解放します

WBOY
リリース: 2016-08-08 09:21:07
オリジナル
1077 人が閲覧しました

PHP の unset() 関数は、変数をクリアして破棄するために使用されます。 unset() を使用して、未使用の変数を破棄できます。ただし、unset() を使用しても、変数が占有しているメモリを破壊できない場合があります。まず例を見てみましょう:

  1. $s=str_repeat('1',255); //255 個の文字列を生成します
  2. $m=memory_get_usage(); //現在占有されているメモリを取得します
  3. unset($s);
  4. $mm=memory_get_usage ( ); //unset() を実行し、現在占有されているメモリを確認します
  5. echo$m-$mm;
  6. ?>

最終出力 unset() から unset を差し引く前に占有されていたメモリ() がメモリを占有している場合、それは unset($s) によってメモリから $s が破棄されたことを意味します (つまり、unset() の後にメモリ使用量が減少したことを意味します)。 Windows プラットフォームの場合、結果は -48 になりました。これは、unset($s) は変数 $s が占有するメモリを破壊しないことを意味しますか?もう一度次の例を作成してみましょう:

  1. $s=str_repeat('1',256); //256 個の文字列を生成します
  2. $m=memory_get_usage(); //現在占有されているメモリを取得します
  3. unset($s);
  4. $mm=memory_get_usage ( ); //unset() を実行し、現在占有されているメモリを確認します
  5. echo$m-$mm;
  6. ?>

この例は上記の例とほぼ同じです。唯一の違いは、$s が 256 個の 1 で構成されており、最初の例より 1 が 1 つ多く、結果は 224 になることです。これは、unset($s) が $s によって占有されていたメモリを破壊したことを意味しますか?

上記 2 つの例を通じて、次の結論を導き出すことができます: 結論 1. unset() 関数は、変数値が 256 バイトを超えるメモリ空間を占有している場合にのみメモリ空間を解放できます。

では、変数値が 256 を超える限り、unset を使用するとメモリ領域を解放できますか?別の例でテストしてみましょう:

  1. $s=str_repeat('1',256); //これは 2 番目の例とまったく同じです
  2. $p=&$s;
  3. $m=memory_get_usage();
  4. unset($s); $s を破棄します
  5. $mm
  6. =memory_get_usage();
  7. echo
  8. $p.';
  9. echo
  10. $m-$mm ; ?>
  11. ページを更新すると、最初の行には 256 個の 1 があり、2 行目は -48 であることがわかります。$s を破棄したのは当然であり、$p は $ を参照する単なる変数です。さらに、unset($s) 後のメモリ使用量は、unset() 前に比べて増加しています。次の例を実行してみましょう:

  • $s
  • =str_repeat('1',256); //これは 2 番目の例とまったく同じです
  • $p
  • =&$s;
  • $m
  • =memory_get_usage();
  • $s
  • =null; //Set $ s は null です $mm
  • =memory_get_usage();
  • echo
  • $p.';echo
  • $m-$mm ; ?>
  • ここでページを更新すると、出力 $p に内容がなく、unset() の前後のメモリ使用量の差が 224 であることがわかります。つまり、変数によって占有されていたメモリがクリアされています。この例の $s=null は、次のように unset() で置き換えることもできます。
  • //これは 2 番目の例とまったく同じです

      $p
    1. =&
    2. $s
    3. ;$m=memory_get_usage();unset($s); $s を破棄します
    4. unset($p);
    5. $mm=memory_get_usage();
    6. echo$p.'
      '
    7. ;
    8. echo
    9. $ m-$mm
    10. ;
    11. ?> $s と $p の両方を破棄するために unset() を使用します。このとき、メモリ使用量の差も 224 であり、これによってメモリも解放されることがわかります。 。次に、別の結論を得ることができます: 結論 2. メモリは、その変数を指すすべての変数 (参照変数など) が破棄された場合にのみ解放されます。
    12. この記事の例を読めば、誰もが unset() について理解できるはずです。少なくとも、私は変数が機能しないときに unset() を使用してメモリを解放します。 上記は、変数を破棄してメモリを解放する PHP unset を内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。
    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート