PHP语言同其他语言一样,具有垃圾回收机制。那么今天我们要为大家讲解的内容就是关于PHP垃圾回收机制的相关问题。希望对大家有所帮助。

一、PHP 垃圾回收机制(Garbage Collector 简称GC)

在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP的GC垃圾处理机制,防止内存溢出。

当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。GC进程一般都跟着每起一个SESSION而开始运行的,gc目的是为了在session文件过期以后自动销毁删除这些文件。

二、__destruct /unset

__destruct() 析构函数,是在垃圾对象被回收时执行。

unset 销毁的是指向对象的变量,而不是这个对象。

三、 Session 与PHP垃圾回收机制

由于PHP的工作机制,它并没有一个daemon线程来定期的扫描Session信息并判断其是否失效,当一个有效的请求发生时,PHP 会根据全局变量 session.gc_probability和session.gc_divisor的值,来决定是否启用一个GC,在默认情况下,

session.gc_probability=1,session.gc_divisor =100

也就是说有1%的可能性启动GC(也就是说100个请求中只有1个gc会伴随100个中的某个请求而启动)。

PHP垃圾回收机制的工作就是扫描所有的Session信息,用当前时间减去session最后修改的时间,同session.gc_maxlifetime参数进行比较,如果生存时间超过gc_maxlifetime(默认24分钟),就将该session删除。

但是,如果你Web服务器有多个站点,多个站点时,GC处理session可能会出现意想不到的结果,原因就是:GC在工作时,并不会区分不同站点的session。

那么这个时候怎么解决呢?

1. 修改session.save_path,或使用session_save_path()让每个站点的session保存到一个专用目录;

2. 提供GC的启动率,自然,PHP垃圾回收机制的启动率提高,系统的性能也会相应减低,不推荐。

3. 在代码中判断当前session的生存时间,利用session_destroy()删除。

延伸阅读:

浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

PHP session过期机制和配置

转载于:https://www.cnblogs.com/52php/p/5666505.html

PHP垃圾回收机制防止内存溢出相关推荐

  1. Node的垃圾回收机制与内存溢出捕获(上)

    Node的垃圾回收机制与内存溢出捕获 一.什么是Node的内存?   想必大家在用JavaScript开发的过程中,不太关心内存的管理,因为对于前端来说,浏览器的内存几乎不会出现用完的情况,因为所接触 ...

  2. JS高级-自执行函数-垃圾回收机制及内存管理

    自执行函数 函数分为两种: (1)一般函数 预解析后通过函数调用 函数名( ) 执行 (2)自执行函数 js引擎一遇到整个函数就立马执行 代码如下: js中的垃圾回收机制及内存管理 内存管理 (1)全 ...

  3. python 释放变量所指向的内存_通俗易懂的Python垃圾回收机制及内存管理

    Python垃圾回收机制及内存管理 内存管理: 先定义一个变量 name='wxl' 那么python会在内存中开辟一小块区域存放"wxl",此时变量的值是我们真正想要存储的,wx ...

  4. Chrome V8系列--浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略

    V8 实现了准确式 GC,GC 算法采用了分代式垃圾回收机制.因此,V8 将内存(堆)分为新生代和老生代两部分. 一.前言 V8的垃圾回收机制:JavaScript使用垃圾回收机制来自动管理内存.垃圾 ...

  5. js垃圾回收机制,内存泄露和内存溢出,解决闭包产生的内存泄露详解

    一.内存的周期和回收机制 分配内存----->使用内存----->释放内存 1.JS 环境中分配的内存有如下声明周期: 内存分配:当我们声明变量.函数.对象的时候,系统会自动为他们分配内存 ...

  6. 垃圾回收机制与内存分配策略

    一. 概述   说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物.事实上,GC的历史比Java久远,早在1960年诞生于MIT的Lisp这门语 ...

  7. 浅谈python的垃圾回收机制以及内存管理

    背景介绍 Python语言默认采用的垃圾收集机制是『引用计数法 Reference Counting』,该算法最早George E. Collins在1960的时候首次提出,50年后的今天,该算法依然 ...

  8. JavaScript的垃圾回收机制与内存管理

    一.垃圾回收机制-GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存. 原理:垃圾收集器会定期(周期性 ...

  9. JVM从零开始(二) -垃圾回收机制以及内存分代模型

    JVM中垃圾回收的判定标准 最终目的是将内存中无用的对象回收掉.具体的判定方法有: 引用计数法,不采用,指的是维护对象被引用的次数,次数为0则意味着是垃圾. 可达性算法-GC Roots tracin ...

最新文章

  1. String Reduction问题分析
  2. putty改oracle数据库密码,用putty远程访问虚拟机linux系统Oracle数据库。
  3. 常见面试题 - URL 解析
  4. 论文阅读笔记01-attention-is-all-you-need
  5. ansi c标准_C/C++的起源与发展故事,我是最牛的软件编程语言,不接受反驳
  6. linux如何获取raw中的文件路径,如何使用Linux获取Touchscreen Rawdata的坐标
  7. (ZT)在日本市场推广 iPhone 应用的经验
  8. 论文阅读9-Fine-tuning Pre-Trained Transformer Language Models to(远程监督关系抽取,ACL2019,GPT,长尾关系,DISTRE)
  9. 与虚拟现实技术相关联的计算机技术,虚拟现实技术与其他技术的关系是什么?-VR-形象思维VR...
  10. python与机器学习(六)——支持向量机(SVM) 多层感知机(MLP)
  11. 移植性问题のLPTSTR、LPCSTR、LPCTSTR、LPSTR之间的转换 转
  12. 微软“作死”Windows
  13. php中对数组进行转码,php实现转码的方式(支持数组类型转码)
  14. line: 1: Syntax error: word unexpected (expecting ))
  15. HFSS19 官方中文教程系列 L06
  16. 如何分析加上SE壳的.net程序
  17. App Extension应用扩展
  18. python在日常的一些用处
  19. 关于极客时间 | MySQL实战45讲的部分总结
  20. 华为云CDN为什么这么受用户的信赖?

热门文章

  1. configure - 配置源代码树
  2. .Net面试题(1)
  3. 微信小游戏视频激励广告onClose接口叠加回调的问题解决方法
  4. 使用 Java 开发 OpenCV 应用
  5. 【java】java内存模型 (1)--基础
  6. 使用jq.lazyload.js,解决设置loading图片的问题
  7. js调试工具console详解
  8. DJANGO用户名认证一例
  9. 面向接口编程详解(一)—— 思想基础
  10. Revit二次开发之“使用ElementTransformUtils.MoveElement()移动元素”