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

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

Aug 08, 2016 am 09:21 AM
echo get memory unset usage

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 チュートリアルに興味のある友人に役立つことを願っています。
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    デスクトップ PC 用 CAMM2: MSI がゲームタワー向けの新しい RAM 規格の利点を説明 デスクトップ PC 用 CAMM2: MSI がゲームタワー向けの新しい RAM 規格の利点を説明 Aug 17, 2024 pm 06:47 PM

    ラップトップ用の最初の LPCAMM2 モジュールはすでに出荷されており、将来的にはデスクトップのメインボードにも CAMM2 が搭載される予定です。 CAMM2 と LPCAMM2 には互換性がなく、デスクトップ PC であっても注意が必要です

    PowerShell を使用してタスクを自動化する方法 PowerShell を使用してタスクを自動化する方法 Feb 20, 2024 pm 01:51 PM

    IT 管理者またはテクノロジーの専門家であれば、自動化の重要性を認識している必要があります。特に Windows ユーザーにとって、Microsoft PowerShell は最高の自動化ツールの 1 つです。 Microsoft は、サードパーティのアプリケーションをインストールする必要なく、自動化のニーズに対応するさまざまなツールを提供しています。このガイドでは、PowerShell を活用してタスクを自動化する方法について詳しく説明します。 PowerShell スクリプトとは何ですか? PowerShell の使用経験がある場合は、コマンドを使用してオペレーティング システムを構成したことがあるかもしれません。スクリプトは、.ps1 ファイル内のこれらのコマンドの集合です。 .ps1 ファイルには、基本的な Get-Help など、PowerShell によって実行されるスクリプトが含まれています。

    テクノロジーの世界を探索できる、厳選された 5 つの Go 言語オープンソース プロジェクト テクノロジーの世界を探索できる、厳選された 5 つの Go 言語オープンソース プロジェクト Jan 30, 2024 am 09:08 AM

    今日の急速な技術発展の時代では、雨後の筍のようにプログラミング言語が出現しています。多くの注目を集めている言語の 1 つは Go 言語です。Go 言語は、そのシンプルさ、効率性、同時実行の安全性などの機能により多くの開発者に愛されています。 Go 言語は、多くの優れたオープンソース プロジェクトがある強力なエコシステムで知られています。この記事では、厳選された 5 つの Go 言語オープンソース プロジェクトを紹介し、読者を Go 言語オープンソース プロジェクトの世界へ導きます。 KubernetesKubernetes は、自動化されたオープンソースのコンテナ オーケストレーション エンジンです。

    Go 言語開発の要点: 5 つの人気のあるフレームワークの推奨事項 Go 言語開発の要点: 5 つの人気のあるフレームワークの推奨事項 Mar 24, 2024 pm 01:15 PM

    「Go 言語開発の要点: 5 つの人気フレームワークの推奨事項」 高速で効率的なプログラミング言語として、Go 言語はますます多くの開発者に好まれています。開発効率を向上させ、コード構造を最適化するために、多くの開発者はフレームワークを使用してアプリケーションを迅速に構築することを選択します。 Go 言語の世界には、選択できる優れたフレームワークが数多くあります。この記事では、5 つの人気のある Go 言語フレームワークを紹介し、読者がこれらのフレームワークをよりよく理解して使用できるように、具体的なコード例を示します。 1.GinGin は高速な軽量 Web フレームワークです。

    Java はどのようにして http リクエストを開始し、ポストを呼び出してインターフェースを取得するのでしょうか? Java はどのようにして http リクエストを開始し、ポストを呼び出してインターフェースを取得するのでしょうか? May 16, 2023 pm 07:53 PM

    1. Java は post インターフェイスを呼び出します 1. Java に付属の URLConnection または HttpURLConnection を使用します 他の jar パッケージをダウンロードする必要はありません URLConnection を呼び出します インターフェイスの応答コードがサーバーによって変更されている場合、応答メッセージは受信できません。応答コードが正しい場合にのみ受信されます。 publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt を返します。

    Golang の Web フレームワーク Echo フレームワークを使用した分散タスク スケジューリングの実装 Golang の Web フレームワーク Echo フレームワークを使用した分散タスク スケジューリングの実装 Jun 24, 2023 am 11:49 AM

    インターネットの発達や情報技術の進歩によりビッグデータの時代が到来し、データ分析や機械学習などの分野も広く活用されています。これらの分野では、タスクのスケジューリングは避けられない問題です。効率的なタスクのスケジューリングを実現する方法は、効率を向上させるために重要です。この記事では、Golang の Web フレームワーク Echo フレームワークを使用して分散タスク スケジューリングを実装する方法を紹介します。 1. Echo フレームワークの概要 Echo は、高性能、スケーラブル、軽量の GoWeb フレームワークです。 HTTPに基づいています

    Laravel 開発: Laravel Echo と Pusher を使用して WebSocket 通信を実装するにはどうすればよいですか? Laravel 開発: Laravel Echo と Pusher を使用して WebSocket 通信を実装するにはどうすればよいですか? Jun 13, 2023 pm 05:01 PM

    Laravel は、拡張性と効率性に優れた人気の PHP フレームワークであり、開発者が高品質の Web アプリケーションを迅速に構築できる強力なツールとライブラリを多数提供しています。その中でも、LaravelEcho と Pusher は、WebSocket 通信を簡単に実装できる 2 つの非常に重要なツールであり、この記事では、Laravel アプリケーションでこれら 2 つのツールを使用する方法について詳しく説明します。 WebSocket とは何ですか? Webソケット

    win10のメモリ管理が原因でブルースクリーンが発生する問題 win10のメモリ管理が原因でブルースクリーンが発生する問題 Dec 30, 2023 pm 07:11 PM

    win10 システムは使用する価値のある優れたシステムです。強力な互換性と高いインテリジェンスにより、win10 システムの使用に基本的に問題はありません。しかし、最近、多くの友人が、自分のコンピュータにブルーディスクが頻繁に表示されると報告しています。そして常にエラーコードmemorymanagementが表示されます。何が起こっているのでしょうか?今日はwin10で頻繁に発生するブルースクリーンの解決策とメモリ管理の終了コードを編集者がお届けしますので、ゲームが必要な方はぜひご覧ください。 win10memorymanagement ブルー スクリーンの解決策: 解決策 1: 1. 「Win キー + R」+「control + Enter」を使用して、コントロール サーフェスに入ります。

    See all articles