首頁 後端開發 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個1組成的字串
  2. $m=memory_get_usage(); //取得目前佔用記憶體
  3. unset($mm$s$s ();
  4. //unset()後再查看當前佔用內存
  5. echo
  6. $m
  7. -$mm;set>? )之後佔用內存,如果是正數,那麼說明unset($s)已經將$s從內存中銷毀(或者說,unset()之後內存佔用減少了),可是我在PHP5和windows平台下,得到的結果是:-48。這是否可以說明,unset($s)並沒有起到銷毀變數$s所佔用記憶體的作用?我們再作下面的例子:

$s

=
    str_repeat
  1. (
  2. '1'
  3. ,256); //產生由256個1組成的字串$m=memory_get_usage(); //取得目前佔用記憶體
  4. unset($mm$s$s (); //unset()後再查看目前佔用記憶體
  5. echo
  6. $m
  7. -$mm;?>
  8. -
  9. $mm;?>?$mm;
  10. ?>
  11. ?不同是,$s由256個1組成,即比第一個例子多了一個1,得到結果是:224。這是否可以說明,unset($s)已經將$s所佔用的記憶體銷毀了?

透過上面兩個例子,我們可以得到以下結論:

結論一、unset()函數只能在變數值佔用記憶體空間超過256位元組時才會釋放記憶體空間。 那麼是不是只要變數值超過256,使用unset就可以釋放記憶體空間呢?我們再來一個例子來測試一下:

  • $s
  • =str_repeat('1',256); //這和第二個例子完全相同
  • $p
  • =&$s;
  • $m
  • =memory_get_usage();$m=memory_get_usage();
  • $s
  • $mm=memory_get_usage();
  • echo
  • $p
  • .'
    '
    ;$p.'
    ';
  • ?>
  • 刷新頁面,我們看到第一行有256個1,第二行是-48,按理說我們已經銷毀了$s,而$p只是引用$s的變量,應該是沒有內容了,另外,unset($s)後記憶體佔用卻比unset()前增加了!現在我們再做以下的範例:
  • $s
  • =str_repeat

    (

    '1'
      ,256);
    1. //這和第二個例子完全相同
    2. $p=&$s;$m
    3. =memory_get_usage();
    4. $m=memory_get_usage(); s為null
    5. $mm
    6. =memory_get_usage();
    7. echo
    8. $p.'
      '
      ;$p
    9. .
    10. '
      ';
    11. ?>
    12. 現在刷新頁面,我們看到,輸出$p已經是沒有內容了,unset()前後內存佔用量之差是224,即已經清除了變量佔用的內存。本例的$s=null也可以換成unset(),如下:
    13. $s=str_repeat('1',256); //這和第二個例子完全相同
    $p

    =&

    $s
      ;
    1. $m=memory_get_usage();$m=memory_get_usage(); $s unset($p
    2. );
    3. $mm=memory_get_usage();
    4. echo
    5. $m
    6. -$mm;?>
    7. 我們將$s和$p都使用unset()銷毀,這時再看內存佔用量之差也是224,說明這樣也可以釋放內存。那麼,我們可以得到另外一條結論:
    8. 結論二、只有當指向該變數的所有變數(如引用變數)都被銷毀後,才會釋放記憶體。
    9. 相信經過本文的例子後,大家應該對unset()有所了解了,最起碼,本人用unset()也是為了在變數不起作用時,釋放記憶體。
    10. 以上就介紹了PHP unset銷毀變數並釋放內存,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱門文章

    <🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系統,解釋
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    熱門話題

    Java教學
    1664
    14
    CakePHP 教程
    1423
    52
    Laravel 教程
    1321
    25
    PHP教程
    1269
    29
    C# 教程
    1249
    24
    適用於桌上型電腦的 CAMM2:MSI 解釋了遊戲塔新 RAM 標準的優勢 適用於桌上型電腦的 CAMM2:MSI 解釋了遊戲塔新 RAM 標準的優勢 Aug 17, 2024 pm 06:47 PM

    第一批用於筆記型電腦的 LPCAMM2 模組已經交付,預計未來桌上型電腦主機板也將配備 CAMM2。 CAMM2和LPCAMM2彼此不相容,即使在桌上型電腦上,客戶也需要小心

    如何使用PowerShell自動執行任務 如何使用PowerShell自動執行任務 Feb 20, 2024 pm 01:51 PM

    如果您是IT管理員或技術專家,您一定意識到自動化的重要性。尤其對於Windows用戶來說,MicrosoftPowerShell是最佳的自動化工具之一。微軟為滿足您的自動化需求提供了各種工具,無需安裝第三方應用程式。本指南將詳細介紹如何利用PowerShell自動化執行任務。什麼是PowerShell腳本?如果您有使用PowerShell的經驗,您可能已經使用過命令來設定您的作業系統。腳本是.ps1檔案中這些指令的集合。 .ps1檔案包含由PowerShell執行的腳本,例如基本的Get-Help

    java如何發起http請求呼叫post與get接口 java如何發起http請求呼叫post與get接口 May 16, 2023 pm 07:53 PM

    一、java調用post介面1、使用URLConnection或HttpURLConnectionjava自帶的,無需下載其他jar包URLConnection方式調用,如果介面回應碼被服務端修改則無法接收到返回報文,只能當回應碼正確時才能接收到回傳publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt

    五個精選的Go語言開源項目,帶你探索科技世界 五個精選的Go語言開源項目,帶你探索科技世界 Jan 30, 2024 am 09:08 AM

    在現今科技快速發展的時代,程式語言也如雨後春筍般湧現。其中一門備受矚目的語言就是Go語言,它以其簡潔、高效、並發安全等特性受到了許多開發者的喜愛。 Go語言以其強大的生態系統而著稱,其中有許多優秀的開源專案。本文將介紹五個精選的Go語言開源項目,帶領讀者一起探索Go語言開源專案的世界。 KubernetesKubernetes是一個開源的容器編排引擎,用於自

    MySQL儲存引擎選用比較:InnoDB、MyISAM與Memory效能指標評估 MySQL儲存引擎選用比較:InnoDB、MyISAM與Memory效能指標評估 Jul 26, 2023 am 11:25 AM

    MySQL儲存引擎選用比較:InnoDB、MyISAM與Memory效能指標評估引言:在MySQL資料庫中,儲存引擎的選擇對於系統效能和資料完整性起著至關重要的作用。 MySQL提供了多種儲存引擎,其中最常用的引擎包括InnoDB、MyISAM和Memory。本文將就這三種儲存引擎進行效能指標評估,並透過程式碼範例進行比較。一、InnoDB引擎InnoDB是My

    Laravel開發:如何使用Laravel Echo和Pusher實現WebSockets通訊? Laravel開發:如何使用Laravel Echo和Pusher實現WebSockets通訊? Jun 13, 2023 pm 05:01 PM

    Laravel是一個流行的PHP框架,具有高度可擴展性和高效性,它提供了許多強大的工具和程式庫,讓開發者可以快速建立高品質的網路應用程式。其中,LaravelEcho和Pusher是兩個非常重要的工具,透過它們可以輕鬆實現WebSockets通信,本文將詳細介紹如何在Laravel應用程式中使用這兩個工具。什麼是WebSockets? WebSockets

    市面上最流行的golang框架有哪些? 市面上最流行的golang框架有哪些? Jun 01, 2024 pm 08:05 PM

    目前最受歡迎的Go框架有:Gin:輕量級、高效能的Web框架,簡潔易用。 Echo:快速、高度可自訂的網路框架,提供高效能路由和中介軟體。 GorillaMux:快速、靈活的多工器,提供進階路由設定選項。 Fiber:效能最佳化的高效能Web框架,處理高並發請求。 Martini:物件導向設計的模組化網路框架,提供豐富的功能集。

    PHP中echo關鍵字的作用與使用方法詳解 PHP中echo關鍵字的作用與使用方法詳解 Jun 28, 2023 pm 08:12 PM

    PHP中echo關鍵字的作用和使用方法詳解PHP是一種廣泛使用的伺服器端腳本語言,它在網頁開發中被廣泛應用。而echo關鍵字是在PHP中用來輸出內容的一種方法。本文將詳細介紹echo關鍵字的作用與使用方法。作用:echo關鍵字的主要作用是將內容輸出到瀏覽器。在網頁開發中,我們需要將資料動態地呈現到前端頁面上,這時就可以使用echo關鍵字將資料輸出到頁面上。 e

    See all articles