PHPでオブジェクトが使用するメモリを見つける方法は? (cのsizeof)。私が知りたいオブジェクトは、文字列とintを含む辞書です。そのため、手動で計算するのが難しくなります。また、PHPの文字列は、エンコーディング(utf8など)に応じてさまざまな長さのことができますか?PHPでオブジェクトが使用するメモリを見つける方法は? (sizeof)
27
A
答えて
40
memory_get_usage()を使用できます。
オブジェクトを作成する前に一度実行してから、オブジェクトを作成した後にもう一度実行して、2つの結果の差を取ってください。
-6
10
8
既に作成されたオブジェクトまたは配列のサイズを知る必要がある場合は、次のコードを使用して見つけ出すことができます。
<?php
function rec_copy($src) {
if (is_string($src)) {
return str_replace('SOME_NEVER_OCCURING_VALUE_145645645734534523', 'XYZ', $src);
}
if (is_numeric($src)) {
return ($src + 0);
}
if (is_bool($src)) {
return ($src?TRUE:FALSE);
}
if (is_null($src)) {
return NULL;
}
if (is_object($src)) {
$new = (object) array();
foreach ($src as $key => $val) {
$new->$key = rec_copy($val);
}
return $new;
}
if (!is_array($src)) {
print_r(gettype($src) . "\n");
return $src;
}
$new = array();
foreach ($src as $key => $val) {
$new[$key] = rec_copy($val);
}
return $new;
}
$old = memory_get_usage();
$dummy = rec_copy($src);
$mem = memory_get_usage();
$size = abs($mem - $old);
?>
これは本質的に配列構造とそのメンバーのすべてのコピーを作成します。
A 100%正確ではないが、それでも作業バージョンもある:オブジェクトが既に構築された場合のために役立ちます
<?php
$old = memory_get_usage();
$dummy = unserialize(serialize($src));
$mem = memory_get_usage();
$size = abs($mem - $old);
希望。
関連する問題
- 1. rubyオブジェクトで使用されるメモリを見つける方法は?
- 2. Haskellでプログラムのメモリ使用を見つける方法
- 3. メモリ内のオブジェクトを見つける方法
- 4. Javaクラスで使用されているメモリを見つける方法は?
- 5. PHPを使用してパブリックフォルダを見つける方法は?
- 6. IList.Contains()メソッドを使用してオブジェクトを見つける方法
- 7. Apache TomcatでWebアプリケーションのメモリ使用量を見つける方法
- 8. メモリ内で最大のオブジェクトを見つけるには?
- 9. PhpStorm - クラスで間違ったインポート(使用)を見つける方法は? (PHP)
- 10. コードワプラグインが使用するAPIを見つける方法
- 11. プロセスメモリで未使用のメモリを見つける
- 12. taskAdapterでアラームマネージャを使用する方法を見つける
- 13. PHPを使用してメモリ内に共有オブジェクトを作成する方法は?
- 14. WPF:Canvasで使用できるスペースを見つける方法
- 15. IEでオブジェクト値がいつ変化するかを見つける方法
- 16. Pythonの属性でオブジェクトを見つける方法は?
- 17. openCVでRectオブジェクトの角を見つける方法は?
- 18. Jqueryで配列のオブジェクト値を見つける方法は?
- 19. モンゴースでオブジェクトの配列を見つける方法は?
- 20. ファイルを保存する前に使用可能なメモリを見つける方法はありますか?
- 21. APIコールの使用方法を見つける方法
- 22. Ida:メモリ上にバッファ変数を見つける方法
- 23. タグで親オブジェクトの子オブジェクトを見つける方法はありますか?
- 24. ルアでは、オブジェクトが格納されているキーを見つける方法
- 25. Axis2を使用してサーバーサイドフレームワークを見つける方法は?
- 26. オブジェクトの属性を使用してバイナリツリー内のノードを見つける方法
- 27. containsを使用しないでXPathを見つける方法
- 28. Powershellを使用して、ファイルフルネームでマウントポイントドライブを見つける方法
- 29. オブジェクトから選択したオブジェクトを見つける方法
- 30. ユーザーごとのディスクスペース使用量を見つける方法は?
メモリ内でそれを行う別の方法はメモリ使用量の取得、オブジェクトのクローン作成、新しいメモリ使用量の取得、クローンの設定解除を行います。しかし、フットプリントがあるので、酷使しないでください。:) –
私は、配列の前後にある 'echo memory_get_usage()'から得られた結果を信じて、その単位は 'KB'にあると思います!! !私は1024でメモリサイズを分割!消費された実際のメモリサイズを取得する。 – Neocortex
いいえバイトではありません。kb http://ca3.php.net/memory_get_usage –