成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

php中的內(nèi)存管理

EasonTyler / 3489人閱讀

摘要:向系統(tǒng)進(jìn)行的內(nèi)存申請,并不是有需要時向系統(tǒng)即時申請,而是由的最底層層先向系統(tǒng)申請一大塊的內(nèi)存,通過對上面三種列表的填充,建立一個類似于內(nèi)存池的管理機(jī)制。在程序運(yùn)行需要使用內(nèi)存的時候,會在內(nèi)存池中分配相應(yīng)的內(nèi)存供使用。

一、php內(nèi)存管理概述——Zend引擎

由于計(jì)算機(jī)的內(nèi)存由操作系統(tǒng)進(jìn)行管理,所以普通應(yīng)用程序是無法直接對內(nèi)存進(jìn)行訪問的。

應(yīng)用程序只能向操作系統(tǒng)申請內(nèi)存,通常的應(yīng)用也是這么做的,在需要的時候通過類似malloc之類的庫函數(shù) 向操作系統(tǒng)申請內(nèi)存。

在一些對性能要求較高的應(yīng)用場景下是需要頻繁的使用和釋放內(nèi)存的, 比如Web服務(wù)器,編程語言等,由于向操作系統(tǒng)申請內(nèi)存空間會引發(fā)系統(tǒng)調(diào)用, 系統(tǒng)調(diào)用和普通的應(yīng)用層函數(shù)調(diào)用性能差別非常大,因?yàn)橄到y(tǒng)調(diào)用會將CPU從用戶態(tài)切換到內(nèi)核, 因?yàn)樯婕暗轿锢韮?nèi)存的操作,只有操作系統(tǒng)才能進(jìn)行,而這種切換的成本是非常大的, 如果頻繁的在內(nèi)核態(tài)和用戶態(tài)之間切換會產(chǎn)生性能問題。

鑒于系統(tǒng)調(diào)用的開銷,一些對性能有要求的應(yīng)用通常會自己在用戶態(tài)進(jìn)行內(nèi)存管理, 例如第一次申請稍大的內(nèi)存留著備用,而使用完釋放的內(nèi)存并不是馬上歸還給操作系統(tǒng), 可以將內(nèi)存進(jìn)行復(fù)用,這樣可以避免多次的內(nèi)存申請和釋放所帶來的性能消耗。

PHP不需要顯式的對內(nèi)存進(jìn)行管理,這些工作都由Zend引擎進(jìn)行管理了。PHP內(nèi)部有一個內(nèi)存管理體系, 它會自動將不再使用的內(nèi)存垃圾進(jìn)行釋放。

二、php中查看與設(shè)置內(nèi)存的相關(guān)參數(shù)與函數(shù)

配置內(nèi)存大?。?/p>

(1)php.ini中可以更改配置memory_limit = 32M
(2)若環(huán)境中沒有禁用ini_set()函數(shù),可以通過此函數(shù)設(shè)置:ini_set("memory_limit", "128M");

查看內(nèi)存情況:

(1)memory_get_usage(),這個函數(shù)的作用是獲取 目前PHP腳本所用的內(nèi)存大小。
(2)memory_get_peak_usage(),這個函數(shù)的作用返回 當(dāng)前腳本到目前位置所占用的內(nèi)存峰值,這樣就可能獲取到目前的腳本的內(nèi)存需求情況。

三、ZendMM內(nèi)存分配和銷毀

PHP底層對內(nèi)存的管理, 圍繞著小塊內(nèi)存列表(free_buckets)、 大塊內(nèi)存列表(large_free_buckets)和 剩余內(nèi)存列表(rest_buckets)三個列表來分層進(jìn)行的。

ZendMM向系統(tǒng)進(jìn)行的內(nèi)存申請,并不是有需要時向系統(tǒng)即時申請, 而是由ZendMM的最底層(heap層)先向系統(tǒng)申請一大塊的內(nèi)存,通過對上面三種列表的填充, 建立一個類似于內(nèi)存池的管理機(jī)制。

在程序運(yùn)行需要使用內(nèi)存的時候,ZendMM會在內(nèi)存池中分配相應(yīng)的內(nèi)存供使用。 這樣做的好處是避免了PHP向系統(tǒng)頻繁的內(nèi)存申請操作。

ZendMM在內(nèi)存銷毀的處理上采用與內(nèi)存申請相同的策略,當(dāng)程序unset一個變量或者是其他的釋放行為時, ZendMM并不會直接立刻將內(nèi)存交回給系統(tǒng),而是只在自身維護(hù)的內(nèi)存池中將其重新標(biāo)識為可用, 按照內(nèi)存的大小整理到上面所說的三種列表(small,large,free)之中,以備下次內(nèi)存申請時使用。

具體的詳情可參考:http://www.php-internals.com/...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/31117.html

相關(guān)文章

  • PHP內(nèi)存模型

    摘要:為單進(jìn)程的由代執(zhí)行每一個請求由從進(jìn)程池中取出進(jìn)程初始化數(shù)據(jù)結(jié)構(gòu)創(chuàng)建進(jìn)程變量共享類似于的內(nèi)容為所有進(jìn)程所共享即單例模式默認(rèn)是采用磁盤文件實(shí)現(xiàn)的管理即變量是一次請求說單獨(dú)的享有的不能被所有請求所共享共享由于每次請求代由創(chuàng)建進(jìn)程所以由共享問題是使 php為單進(jìn)程的,由apache代執(zhí)行,每一個請求,由apache從進(jìn)程池中取出進(jìn)程,初始化數(shù)據(jù)結(jié)構(gòu),創(chuàng)建進(jìn)程. 變量共享,類似于session的...

    Maxiye 評論0 收藏0
  • PHP7源碼分析】PHP內(nèi)存管理

    摘要:分頁管理先說說虛擬內(nèi)存的概念。每個存在的虛擬頁面都保存在某個區(qū)域中,不屬于任何一個區(qū)域的虛擬頁是不存在的,不能被進(jìn)程使用內(nèi)核為系統(tǒng)中的每個進(jìn)程維護(hù)一個單獨(dú)的任務(wù)結(jié)構(gòu),任務(wù)中的一個字段指向,他描述了虛擬內(nèi)存的當(dāng)前狀態(tài)。 作者: 順風(fēng)車運(yùn)營研發(fā)團(tuán)隊(duì) 李樂 第一章 從操作系統(tǒng)內(nèi)存管理說起 程序是代碼和數(shù)據(jù)的集合,進(jìn)程是運(yùn)行著的程序;操作系統(tǒng)需要為進(jìn)程分配內(nèi)存;進(jìn)程運(yùn)行完畢需要釋放內(nèi)存;內(nèi)存管...

    waltr 評論0 收藏0
  • PHP|什么是CGI, FastCGI, PHP-CGI, PHP-FPM, Spawn-FCGI

    摘要:當(dāng)客戶端請求到達(dá)時,進(jìn)程管理器選擇并連接到一個解釋器。什么是是一個管理器,是只用于的可以在下載得到其實(shí)是源代碼的一個補(bǔ)丁,旨在將進(jìn)程管理整合進(jìn)包中。與功能比較都是守護(hù)的進(jìn)程管理器。 什么是CGI CGI全稱是公共網(wǎng)關(guān)接口(Common Gateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行交談的一種工具,其程序須運(yùn)行在網(wǎng)絡(luò)服務(wù)器上。 CGI可以用任何一種語言編...

    el09xccxy 評論0 收藏0
  • 什么是CGI、FastCGI、PHP-CGI、PHP-FPM

    摘要:的工作原理啟動時載入進(jìn)程管理器或進(jìn)程管理器自身初始化,啟動多個解釋器進(jìn)程可見多個并等待來自的連接。當(dāng)客戶端請求到達(dá)時,進(jìn)程管理器選擇并連接到一個解釋器。什么是是一個管理器,是只用于的其實(shí)是源代碼的一個補(bǔ)丁,旨在將進(jìn)程管理整合進(jìn)包中。 什么是CGI CGI全稱是公共網(wǎng)關(guān)接口(Common Gateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行交談的一種工具,其程...

    MycLambert 評論0 收藏0
  • PHP 垃圾回收與內(nèi)存管理指引

    摘要:本文將要講述發(fā)展歷程中的垃圾回收及內(nèi)存管理相關(guān)內(nèi)容,文末給出發(fā)展在各個階段有關(guān)內(nèi)存管理及垃圾回收內(nèi)核參考資料值得閱讀。引用計(jì)數(shù)在及以前的版本中,的垃圾回收采用的是引用計(jì)數(shù)算法。回收周期當(dāng)緩沖區(qū)滿時,對緩沖區(qū)中的所有可能根進(jìn)行垃圾回收處理。 showImg(https://segmentfault.com/img/bVbe29F?w=800&h=440); 本文首發(fā)于 PHP 垃圾回收與...

    Tychio 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<