亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

淺談PHP源碼三十二:PHP內存池中的emalloc-efree層與堆(heap)層

2020-03-22 17:40:30
字體:
來源:轉載
供稿:網友
首頁 > html' target='_blank'>php教程 > php教程 > 正文 淺談PHP源碼三十二:PHP內存池中的emalloc/efree層與堆(heap)層 2018-06-29 09:54:52 第六期線上培訓班
這篇文章主要介紹了關于淺談PHP源碼三十二:PHP內存池中的emalloc/efree層與堆(heap)層,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

淺談PHP源碼三十二:PHP內存池中的emalloc/efree層與堆(heap)層
emalloc/efree層是整個內存體系中最上層結構,它通過與堆層的交換使用PHP自帶的內存管理機制。如果有設置USE_ZEND_ALLOC為0,則直接使用malloc/free等函數直接操作內存。
這里將從emalloc與efree兩個函數的實現解析emalloc/efree層與堆層的交互,及堆層對于內存的管理機制。

【emalloc】
emalloc函數是從zend_alloc.h 70行開始。
emalloc是一個宏,其對應了_emalloc函數。
在_emalloc函數中,如果未使用zend的內存管理機制,則直接調用malloc函數,否則調用

_zend_mm_alloc_int[emalloc() - _emalloc() - _zend_mm_alloc_int() ]

在_zend_mm_alloc_int函數中,程序會處理真實需要的內存小于或大于等于ZEND_MM_MAX_SMALL_SIZE(272)兩種情況,如果小于ZEND_MM_MAX_SMALL_SIZE,則會搜索free_buckets,看是否有合適的內存塊,如果可以在free_buckets中找到合適的塊使用,同直接跳轉到zend_mm_finished_searching_for_block,否則執行zend_mm_search_large_block()

[emalloc() - _emalloc() - _zend_mm_alloc_int() - zend_mm_search_large_block()]
zend_mm_search_large_block函數用來在large_free_buckets中查找合適的內存塊。其中當對于ZEND_MM_LARGE_BUCKET_INDEX(true_size)大小的沒有找到時,需要查找更大塊列表中的最小塊。

如果在大塊列表和小塊列表中都沒有,則需要從剩余列表塊中查找,如果找到,則同樣跳轉到zend_mm_finished_searching_for_block
如果三個列表中都沒有找到,則需要重新增加內存分配。此時調用storage層的分配函數進行分配,其中內存的大小,如果需要分配的內存大于block_size,則需要根據大小重新計算,否則直接分配block_size大小的內存。
分配內存完后,需要重新整理堆,此時需要重新計算堆中的內存大小,將新分配的內存添加到segments_list的前面。

如果在上面的操作中是直接跳轉到zend_mm_finished_searching_for_block,則需要將使用了的內存塊從對應的列表中移除(此處應該是一個標記的過程,偽移除)

接下來,根據剩下的內存大小,將其移到空閑列表或剩余列表。

最后返回分配的塊。

在emalloc整個過程中,有以下一些注意點。
ZEND_MM_BUCKET_INDEX(true_size)定位在bucket中的位置,這個值大于等于0,小于32。
其實現如下:

#define ZEND_MM_BUCKET_INDEX(true_size) ((true_size ZEND_MM_ALIGNMENT_LOG2)-(ZEND_MM_ALIGNED_MIN_HEADER_SIZE ZEND_MM_ALIGNMENT_LOG2))

free_bitmap和large_free_bitmap的值都是0到31。

【efree】
efree函數是從zend_alloc.h 72行開始。
efree是一個宏,其對應了_efree函數。
在_efree函數中,如果未使用zend的內存管理機制,則直接調用free函數,否則調用_

zend_mm_free_int[efree() - _efree() - _zend_mm_free_int() ]

堆首先將整個堆的大小減少,如果當前塊的后一個塊是空閑塊,則將后一個空閑塊從空閑塊列表中刪除并與當前塊合并,如果當前塊的前一個塊是空閑塊,則將前一個空閑塊從空閑塊列表中刪除并與當前塊合并,指針指向前一個空閑塊。如果此時當前塊是開始的塊,則調用zend_mm_del_segment將整段內存清除,如果不是開始塊,則將合并后的塊添加到空閑塊列表。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

淺談PHP源碼三十一:PHP內存池中的堆(heap)層基礎

淺談PHP源碼三十:PHP內存池中的存儲層

淺談PHP源碼二十九:關于接口的繼承

以上就是淺談PHP源碼三十二:PHP內存池中的emalloc/efree層與堆(heap)層的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区久久精品| 福利视频第一区| 国产亚洲精品美女久久久久| 日韩欧美国产高清91| 成人网在线视频| 亚洲精品日韩av| 亚洲精品动漫100p| 国内精品久久久久久| 欧美视频精品一区| 成人亚洲综合色就1024| 在线激情影院一区| 精品久久香蕉国产线看观看亚洲| 亚洲精品免费一区二区三区| 久久成人国产精品| 国产精品久久久久久久久粉嫩av| 欧美有码在线观看视频| 国产精品女主播视频| 国产香蕉97碰碰久久人人| 亚洲国产精品一区二区久| 亚洲国产高清高潮精品美女| 亚洲视频综合网| 日韩在线播放视频| 欧美日韩免费区域视频在线观看| 国产va免费精品高清在线| 在线视频日本亚洲性| 91av在线播放| 在线丨暗呦小u女国产精品| 欧美日韩视频在线| 欧美日韩亚洲国产一区| 91精品视频在线播放| 色综合久综合久久综合久鬼88| 国产欧美久久一区二区| 国内精品久久久久久| 日韩在线中文视频| 国产精品十八以下禁看| 国产91九色视频| 国产精品亚洲综合天堂夜夜| 精品一区二区三区电影| 亚洲国产一区二区三区四区| 欧美老女人bb| 懂色aⅴ精品一区二区三区蜜月| 国产伦精品一区二区三区精品视频| 国模叶桐国产精品一区| 精品一区精品二区| 午夜精品一区二区三区在线视| 国产日韩精品电影| 成人妇女淫片aaaa视频| 色青青草原桃花久久综合| 亚洲国产成人精品久久久国产成人一区| 日韩欧美高清视频| 久久精品99无色码中文字幕| 欧美成人一区在线| 97在线免费观看视频| 欧美日韩性视频在线| 日韩在线观看视频免费| 亚洲天堂av高清| 国产日韩换脸av一区在线观看| 国产日韩欧美日韩大片| 国产精品自拍小视频| 自拍视频国产精品| 色妞一区二区三区| 国产成人综合精品在线| 国产精彩精品视频| 国产视频久久久久| 欧美在线观看一区二区三区| 欧美日韩性视频| 久久久噜噜噜久久久| 国产精品视频色| 亚洲欧美在线磁力| 国产精品xxx视频| 国产精品久久久久久久久久| 久久视频在线看| 欧美日韩亚洲天堂| 日韩午夜在线视频| 日韩一区二区福利| 国产精品电影久久久久电影网| xxxxx91麻豆| 神马国产精品影院av| 日韩高清电影好看的电视剧电影| 日韩精品视频中文在线观看| 伊人亚洲福利一区二区三区| 黑人巨大精品欧美一区二区| 色悠久久久久综合先锋影音下载| 亚洲人精选亚洲人成在线| 91国偷自产一区二区三区的观看方式| 日韩精品免费在线播放| 一本久久综合亚洲鲁鲁| 国产激情久久久| 久久免费在线观看| 九九久久国产精品| 亚洲天堂视频在线观看| 国产精品吹潮在线观看| 久久香蕉国产线看观看网| 国产欧美久久一区二区| 美女久久久久久久久久久| 亚洲国产精品人人爽夜夜爽| 国产中文欧美精品| 欧美激情在线一区| 久久久久久久色| 欧美日韩国产va另类| 欧美日韩精品二区| 亚洲精品乱码久久久久久按摩观| 清纯唯美亚洲综合| 国产成人精品久久亚洲高清不卡| 国产综合色香蕉精品| 国产不卡视频在线| 国产综合久久久久久| 亚洲图片欧美午夜| 色偷偷91综合久久噜噜| 亚洲欧洲高清在线| 亚洲a中文字幕| 欧美视频裸体精品| 亚洲精品午夜精品| 精品久久久视频| 91九色国产社区在线观看| 国产成人鲁鲁免费视频a| 欧美有码在线观看| 亚洲精品动漫久久久久| 尤物九九久久国产精品的分类| 国产精品第2页| 亚洲精品一区二三区不卡| 午夜精品久久久久久久99热| 亚洲伊人一本大道中文字幕| 色播久久人人爽人人爽人人片视av| 色妞色视频一区二区三区四区| 亚洲人成电影在线| 中文字幕日韩在线视频| 亚洲欧美一区二区三区久久| 日韩乱码在线视频| 国产精品三级网站| 欧美在线一级视频| 久久久精品日本| 国产精品成人av性教育| 久久精品视频播放| 91精品国产777在线观看| 国产精品极品尤物在线观看| 亚洲精品一区二区久| 中文字幕亚洲一区在线观看| 亚洲高清久久网| 国产精品黄视频| 亚洲天堂第一页| 亚洲视屏在线播放| 97在线免费观看| 欧美一级黑人aaaaaaa做受| 久久精品国产一区二区三区| 久久久电影免费观看完整版| 国内伊人久久久久久网站视频| 国产精品高潮在线| 92版电视剧仙鹤神针在线观看| 日韩在线观看免费全集电视剧网站| 欧美专区在线视频| 一区二区在线免费视频| 国产97在线视频| 亚洲色图欧美制服丝袜另类第一页| 亚洲一区亚洲二区亚洲三区| 日韩欧美中文字幕在线观看| 精品一区二区三区四区在线| 亚洲美女精品成人在线视频| 亚洲欧洲中文天堂| 8090理伦午夜在线电影| 亚洲一区二区三区sesese| 国产一区二区三区在线播放免费观看| 亚洲三级 欧美三级| 欧洲亚洲妇女av|