ホームページ バックエンド開発 PHPチュートリアル PHP 変数とメモリ管理に関する学習メモ

PHP 変数とメモリ管理に関する学習メモ

Mar 12, 2017 pm 01:38 PM
PHP変数

1.memory_get_usage 関数

int memory_get_usage ([ bool $real_usage = false ] )


PHP スクリプトによって使用されるメモリ (memory_get_usage() 関数自体によって占有されるメモリを除く)

memory_get_usage() パラメータ $ real_usage、デフォルトは FALSE です。TRUE に設定すると、取得されるメモリ値は PHP メモリ管理によって占有されるメモリになります。

//php分配到的内存
var_dump(memory_get_usage(true));
//php使用内内存
var_dump(memory_get_usage());
ログイン後にコピー

Result

int 262144
int 239368


PHPのメモリ管理メカニズムは、変数を保存するためのスペースを事前に割り当て、スペースが十分でない場合は、新しいスペースを申請します。

memory_get_usage(true) は、事前に割り当てられたメモリです。


これまで PHP ページのメモリ使用量に注意を払ったことはありませんでした。今後ページを最適化するときにも、この関数を使用してコードを分析する必要があります。


2. 変数の割り当てとメモリ

var_dump(memory_get_usage());
 
$a = "Hello World";
var_dump(memory_get_usage());
 
$b = $a;
var_dump(memory_get_usage());
 
unset($b);
var_dump(memory_get_usage());
 
unset($a);
var_dump(memory_get_usage());
ログイン後にコピー

Result

int 239776
int 239912
int 240000
int 239912
int 239776


239912-239776=136

240000-239912=88


$a と $b の割り当てで使用されるメモリが異なります。これは、$b の割り当てでは、出力関数がメモリを割り当てないためです。

さらに、$b を破棄しても、$a が使用するメモリには影響しません。これが、メモリ管理の参照カウントの理由です。

例を変更すると、変数の割り当てとメモリの関係が明確に理解できます

var_dump(memory_get_usage());
 
$a = "Hello World";
var_dump(memory_get_usage());
 
$b = "Hello World";
var_dump(memory_get_usage());
 
unset($b);
var_dump(memory_get_usage());
 
unset($a);
var_dump(memory_get_usage());
ログイン後にコピー

結果

int 239816
int 239952
int 240088
int 239952
int 239816

239952-239816=136

240088-239952=136


追加の参照割り当て メモリ占有ルールは直接割り当てに似ています。メモリ管理の参照が含まれます


3. この部分は十分に理解されていません

xdebug_zval をインストールする必要があります。

(refcount=1, is_ref= 0),

string

'Hello World' (length=11)

refcountは値を指す変数の数ですis_refはアドレス参照があるかどうかを表します

type

value

変数を代入する場合: is_ref は false refcount 1 の場合

マニュアルアドレス


参照カウントの基礎知識

http://php.net/manual/zh/features.gc.refcounting-basics.php

すべての

php 変数

は、変数コンテナーに「zval」というファイルが存在します。 zval 変数コンテナには、変数の型と値に加えて、2 バイトの追加情報が含まれています。 1 つ目は「is_ref」です。これは、この変数が参照セットに属しているかどうかを識別するために使用されるブール値です。このバイトを通じて、PHP エンジンは通常の変数と参照変数を区別できます。PHP ではユーザーが & を使用してカスタム参照を使用できるため、zval 変数コンテナーにはメモリ使用量を最適化するための内部参照カウント メカニズムもあります。 2 番目の追加バイトは「refcount」で、この zval 変数コンテナーを指す変数 (シンボルとも呼ばれます) の数を示すために使用されます。すべてのシンボルはシンボル テーブルに存在し、各シンボルにはスコープ (スコープ) があり、メイン スクリプト (例: ブラウザを通じて要求されたスクリプト)、および各関数またはメソッドにもスコープがあります。

以上がPHP 変数とメモリ管理に関する学習メモの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP 注意: 未定義の変数: 解決策 PHP 注意: 未定義の変数: 解決策 Jun 25, 2023 pm 04:18 PM

PHP 開発では、PHP Notice:Unknownvariable というエラー メッセージが頻繁に発生します。このエラー メッセージは、コード内で未定義の変数が使用されたことを意味します。このエラー メッセージによってコードがクラッシュすることはありませんが、コードの可読性と保守性に影響します。以下、この記事ではこのエラーを解決するいくつかの方法を紹介します。 1. 開発プロセス中に error_reporting(E_ALL) 関数を使用します。PHP 開発では、次のことができます。

PHP 注意: 未定義の変数: ソリューション内の arr PHP 注意: 未定義の変数: ソリューション内の arr Jun 22, 2023 am 10:21 AM

PHP Notice:Unknownvariable:arrin の解決策 PHP プログラミングでは、「 Notice:Unknownvariable」というエラー メッセージが頻繁に表示されます。このエラー メッセージは通常、未定義の変数にアクセスしたか、変数が初期化されていないことが原因で発生します。この問題については、問題を見つけて時間内に解決する必要があります。この記事では、PHP Notice:Undefin に焦点を当てます。

PHP で数値変数を使用する方法 PHP で数値変数を使用する方法 Sep 13, 2023 pm 12:46 PM

PHP で数値変数を使用する方法 PHP では、数値変数は、宣言せずに直接使用される変数の型です。数値変数を使用して、数学的計算、データ比較、その他の数値演算を実行できます。この記事では、PHP で数値変数を使用する方法を説明し、具体的なコード例を示します。数値変数の定義 PHP では、数値変数の定義は非常に簡単で、変数に直接数値を割り当てるだけです。以下に例を示します: $number=10; 上記のコードでは、$numb という値を定義します。

PHP 変数の未定義エラーをすばやく排除するにはどうすればよいですか? PHP 変数の未定義エラーをすばやく排除するにはどうすればよいですか? Dec 17, 2023 am 10:23 AM

PHP 変数の未定義エラーをすばやく排除するにはどうすればよいですか? PHP 開発では、未定義変数エラーがよく発生します。これは、コード内で未割り当ての変数が使用されているためです。この種のエラーが発生した場合、エラーの原因を迅速に特定して解決する必要があります。ここでは、PHP 変数の未定義エラーを迅速にトラブルシューティングして、エラーをより迅速に見つけて修正するためのいくつかの方法を示します。エラーレポートをオンにする: エラーレポートをオンにすると、PHP は変数未定義エラーを含むすべてのエラーおよび警告メッセージを表示します。コードを開くことでこれを行うことができます

PHP 注意: 未定義の変数: SQL ソリューション PHP 注意: 未定義の変数: SQL ソリューション Jun 23, 2023 am 08:51 AM

PHP アプリケーションを開発するときに、「未定義の変数: sql」というプロンプトが表示された場合は、通常、未定義の変数を参照していることを意味します。これには、変数名のスペルミス、スコープの問題、コード内の構文エラーなど、さまざまな理由が考えられます。この記事では、この問題のさまざまな原因を調査し、それを解決するいくつかの方法を提供します。 1. 変数名のスペルが間違っている PHP コード内で変数名が間違っているか、スペルが間違っている場合、システムは

PHP変数を参照によって渡す方法 PHP変数を参照によって渡す方法 Aug 26, 2023 am 09:01 AM

PHP では、アンパサンド (&) 記号を使用して、値ではなく参照によって変数を渡すことができます。これにより、関数またはメソッド内で元の変数を変更できるようになります。 PHP 変数を参照渡しするには、主に 2 つの方法があります。 アンパサンド記号を使用する 関数/メソッド宣言でアンパサンド記号を使用する 関数/メソッド宣言でアンパサンド記号を使用する 関数/メソッドに変数を渡す場合、PHP では関数/ アンパサンド記号 ( &) メソッド宣言で変数を参照渡しします。更新された説明は次のとおりです。関数/メソッド宣言で & 記号を使用して参照変数を渡すには、関数/メソッド定義のパラメーター名の前に & 記号を含める必要があります。これは、パラメーターが参照によって渡される必要があることを示します。

PHP に関する解決策 注意: 未定義の変数: 結果 PHP に関する解決策 注意: 未定義の変数: 結果 Jun 22, 2023 pm 01:32 PM

PHP Notice:Unknownvariable:result は、PHP プログラムで未定義変数の結果が呼び出され、プログラムが通知レベルの警告を生成することを意味します。この状況は通常、プログラマが PHP コードを作成するときに変数または変数のスコープを正しく定義していないことが原因で発生します。この通知レベルの警告が時間内に解決されない場合、プログラムの動作に問題が発生する可能性があります。したがって、PHP Notice を解決する方法は次のとおりです。

PHP プログラミングで一般的な変数は何ですか? PHP プログラミングで一般的な変数は何ですか? Jun 12, 2023 am 10:06 AM

PHP プログラミングでは、変数は値を保存する基本単位であり、プログラム実行中にデータを保存および使用するために使用されます。 PHP では、変数に整数、浮動小数点、文字列、配列などのさまざまなデータ型を割り当てることができます。この記事では、PHP プログラミングにおける一般的な変数とその使用法を紹介します。単純変数は最も一般的な変数タイプであり、整数、浮動小数点数、文字列などの通常のデータ型を格納できます。 PHP では、未定義の変数の初期値は NULL です。以下にいくつかの例を示します。 整数変数: $

See all articles