PHPでメモリ使用量を追跡する方法|memory_get_usage関数の使い方と2種類の使用量の違い
PHPでは、memory_get_usage() 関数を使うことで、スクリプト実行中のメモリ使用量を簡単に追跡できます。
PHPのメモリ管理の仕組み
PHPは、必要になるたびにOSへ個別にメモリを要求するのではなく、あらかじめ大きなメモリ領域をまとめて確保し、それをZendエンジンが内部で管理・再利用する仕組みを採用しています。このため、細かい割り当て処理のコストを抑えつつ、効率的なメモリ運用が可能になっています。
2種類のメモリ使用量
PHPにおけるメモリ使用量には、次の2種類があります。
- 実際の使用量(real usage):PHPエンジンがOSから確保したメモリの総量
- 内部使用量(internal usage):アプリケーションが実際に使用しているメモリの量
memory_get_usage() の基本的な使い方
これらの使用量は memory_get_usage() で取得でき、引数によって返される値が変わります。デフォルト(引数なしまたは false)では内部使用量を、true を渡すとOSから確保された実際の使用量を返します。
<?php
// 内部使用量(アプリが実際に使っているメモリ)
echo memory_get_usage();
// 実際の使用量(OSから確保されたメモリ)
echo memory_get_usage(true);
?>どちらを使うべきか?
用途に応じて使い分けるのがポイントです。
- 特定のコード断片や関数単位で消費メモリを調べたい場合は、内部使用量が適しています。
- サーバー全体のメモリ監視やチューニングなど、グローバルな観点で追跡したい場合は、実際の使用量の方が参考になります。
補足:ピーク時のメモリ使用量も取得できる
実行中の最大メモリ消費を知りたい場合は、memory_get_peak_usage() を使うと便利です。memory_get_usage(true) と同様に、引数に true を渡すことで実際の使用量ベースのピーク値を取得できます。パフォーマンス解析やメモリリークの調査に役立ちます。
-
Macのメモリ使用量を減らす6つの簡単テクニック
どれほど大容量のRAMや高性能なハードウェアを搭載したMacでも、使い続けるうちに動きが鈍く感じられることはありませんか?「そろそろハードウェアのアップグレードが必要では?」と考えてしまうかもしれません。しかし、単純にハードウェアを買い替えることが問題解決の近道とは限りません。多くの場合、システムの快適さはメモリの使い方次第で大きく変わるのです。 Macのメモリ使用量を減らす方法 Macのメモリを解放する方法は数多くあります。ここでは、誰でも今日から実践できるシンプルな方法を6つご紹介します。 1. アクティビティモニタで不要なアプリを終了する 使っていないのにバックグラウンドで常時起動してい
-
Firefox 3.1 Beta 3のメモリ使用量を徹底検証 ― LinuxとWindowsでの実測レポート
先日、Firefox 3.1 Beta 3をレビューしました。JavaScriptパフォーマンスの大幅な向上、使い勝手とプライバシーに関する新機能、将来のHTMLマルチメディア要素への対応など、非常に魅力的なリリースです。ところが、あの記事ではメモリ使用量については一切触れていませんでした。 それには、ちゃんとした理由があります。 アプリケーションのメモリ使用量を正確に測定するのは、実は非常に難しい作業です。せいぜい得られるのは「推測」や「目安」程度で、しかも主観的かつ限られた要因に基づくもので、ほとんど役に立たないことも珍しくありません。多くの人は、タスクマネージャー、Process Exp