php函數memory_get_usage() 查看當前分配給PHP 指令碼的記憶體

來源:互聯網
上載者:User
  1. echo memory_get_usage(), '
    '; // 313864
  2. $tmp = str_repeat('http://www.nowamagic.net/', 4000);
  3. echo memory_get_usage(), '
    '; // 406048
  4. unset($tmp);
  5. echo memory_get_usage(); // 313952
  6. ?>
複製代碼

上面的程式後面的注釋代表了它們的輸出(單位為 byte(s)),也就是當時 PHP 指令碼使用的記憶體(不含 memory_get_usage() 函數本身佔用的記憶體)。

由上面的例子可以看出,要想減少記憶體的佔用,可以使用 PHP unset() 函數把不再需要使用的變數刪除。類似的還有:PHP mysql_free_result() 函數,可以清空不再需要的查詢資料庫得到的結果集,這樣也能得到更多可用記憶體。

PHP memory_get_usage() 函數還可以有個參數,$real_usage,其值為布爾值。預設為 FALSE,表示得到的記憶體使用量量不包括該函數(PHP 記憶體管理器)佔用的記憶體;當設定為 TRUE 時,得到的記憶體為不包括該函數(PHP 記憶體管理器)佔用的記憶體。

實際編程中,可以用 memory_get_usage() 函數比較各個方法佔用記憶體的高低,來選擇使用哪種佔用記憶體小的方法。

貼個實用的函數:

  1. if (!function_exists('memory_get_usage'))
  2. {
  3. /**
  4. +----------------------------------------------------------
  5. * 取得記憶體使用量情況
  6. +----------------------------------------------------------
  7. * @return integer
  8. +----------------------------------------------------------
  9. */
  10. function memory_get_usage()
  11. {
  12. $pid = getmypid();
  13. if (IS_WIN)
  14. {
  15. exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output);
  16. return preg_replace('/[^0-9]/', '', $output[5]) * 1024;
  17. }
  18. else
  19. {
  20. exec("ps -eo%mem,rss,pid | grep $pid", $output);
  21. $output = explode(" ", $output[0]);
  22. return $output[1] * 1024;
  23. }
  24. }
  25. }
複製代碼

再來個使用函數的例子:

  1. //memory_get_usage();
  2. $m1 = memory_get_usage();
  3. echo '
    m1:',$m1;//58096
  4. $a = 'hello';
  5. $b = str_repeat($a,1000);
  6. $m2 = memory_get_usage();
  7. echo '
    m2:',$m2;//63424
  8. unset($b);
  9. $m3 = memory_get_usage();
  10. echo '
    m3:',$m3;//58456
  11. ?>
複製代碼
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.