电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP特點之垃圾回收機制2——回收周期

瀏覽:5日期:2022-09-15 14:44:28

傳統上,像以前的 php 用到的引用計數內存機制,無法處理循環的引用內存泄漏。然而 5.3.0 PHP 使用文章? 引用計數系統中的同步周期回收(Concurrent Cycle Collection in Reference Counted Systems)中的同步算法,來處理這個內存泄漏問題。

對算法的完全說明有點超出這部分內容的范圍,將只介紹其中基礎部分。首先,我們先要建立一些基本規則,如果一個引用計數增加,它將繼續被使用,當然就不再在垃圾中。如果引用計數減少到零,所在變量容器將被清除(free)。就是說,僅僅在引用計數減少到非零值時,才會產生垃圾周期(garbage cycle)。其次,在一個垃圾周期中,通過檢查引用計數是否減1,并且檢查哪些變量容器的引用次數是零,來發現哪部分是垃圾。

PHP特點之垃圾回收機制2——回收周期

為避免不得不檢查所有引用計數可能減少的垃圾周期,這個算法把所有可能根(possible roots 都是zval變量容器),放在根緩沖區(root buffer)中(用紫色來標記),這樣可以同時確保每個可能的垃圾根(possible garbage root)在緩沖區中只出現一次。僅僅在根緩沖區滿了時,才對緩沖區內部所有不同的變量容器執行垃圾回收操作??瓷蠄D的步驟 A。

在步驟 B 中,算法使用深度優先搜索查找所有可能的根,找到后將每個變量容器中的引用計數減“1',為確保不會對同一個變量容器減兩次'1',用灰色標記已減過“1”的。在步驟 C 中,算法再一次對每個根節點使用深度優先搜索,檢查每個變量容器的引用計數。如果引用計數是 0 ,變量容器用白色來標記(圖中的藍色)。如果引用次數大于0,則恢復在這個點上使用深度優先搜索而將引用計數減”1“的操作(即引用計數加“1”),然后將它們重新用黑色標記。在最后一步 D 中,算法遍歷根緩沖區以從那里刪除變量容器根(zval roots),同時,檢查是否有在上一步中被白色標記的變量容器。每個被白色標記的變量容器都被清除。

現在,你已經對這個算法有了基本了解,我們回頭來看這個如何與PHP集成。默認的,PHP的垃圾回收機制是打開的,然后有個 php.ini 設置允許你修改它:zend.enable_gc

當垃圾回收機制打開時,每當根緩存區存滿時,就會執行上面描述的循環查找算法。根緩存區有固定的大小,可存10,000個可能根,當然你可以通過修改PHP源碼文件Zend/zend_gc.c中的常量GC_ROOT_BUFFER_MAX_ENTRIES,然后重新編譯PHP,來修改這個10,000值。當垃圾回收機制關閉時,循環查找算法永不執行,然而,可能根將一直存在根緩沖區中,不管在配置中垃圾回收機制是否激活。

當垃圾回收機制關閉時,如果根緩沖區存滿了可能根,更多的可能根顯然不會被記錄。那些沒被記錄的可能根,將不會被這個算法來分析處理。如果他們是循環引用周期的一部分,將永不能被清除進而導致內存泄漏。

即使在垃圾回收機制不可用時,可能根也被記錄的原因是,相對于每次找到可能根后檢查垃圾回收機制是否打開而言,記錄可能根的操作更快。不過垃圾回收和分析機制本身要耗不少時間。

除了修改配置zend.enable_gc ,也能通過分別調用 gc_enable() 和 gc_disable()函數來打開和關閉垃圾回收機制。調用這些函數,與修改配置項來打開或關閉垃圾回收機制的效果是一樣的。即使在可能根緩沖區還沒滿時,也能強制執行周期回收。你能調用 gc_collect_cycles()函數達到這個目的。這個函數將返回使用這個算法回收的周期數。

允許打開和關閉垃圾回收機制并且允許自主的初始化的原因,是由于你的應用程序的某部分可能是高時效性的。在這種情況下,你可能不想使用垃圾回收機制。當然,對你的應用程序的某部分關閉垃圾回收機制,是在冒著可能內存泄漏的風險,因為一些可能根也許存不進有限的根緩沖區。因此,就在你調用 gc_disable()函數釋放內存之前,先調用 gc_collect_cycles()函數可能比較明智。因為這將清除已存放在根緩沖區中的所有可能根,然后在垃圾回收機制被關閉時,可留下空緩沖區以有更多空間存儲可能根。

標簽: PHP
相關文章:
主站蜘蛛池模板: 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 三价铬_环保铬_环保电镀_东莞共盈新材料贸易有限公司 | 快速卷帘门_硬质快速卷帘门-西朗门业| LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 书信之家_书信标准模板范文大全| 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 数控走心机-走心机价格-双主轴走心机-宝宇百科 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 飞飞影视_热门电影在线观看_影视大全| 月嫂_保姆_育婴_催乳_母婴护理_产后康复_养老护理-吉祥到家家政 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 机械立体车库租赁_立体停车设备出租_智能停车场厂家_春华起重 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 滚筒线,链板线,总装线,流水线-上海体能机电有限公司 | 分光色差仪,测色仪,反透射灯箱,爱色丽分光光度仪,美能达色差仪维修_苏州欣美和仪器有限公司 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | QQ房产导航-免费收录优秀房地产网站_房地产信息网 | 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 江西自考网-江西自学考试网 | 急救箱-应急箱-急救包厂家-北京红立方医疗设备有限公司 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 药品仓库用除湿机-变电站用防爆空调-油漆房用防爆空调-杭州特奥环保科技有限公司 | 全自动不干胶贴标机_套标机-上海今昂贴标机生产厂家 | 脉冲布袋除尘器_除尘布袋-泊头市净化除尘设备生产厂家 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 |