PHP的基本GC概念
PHP语言同其他语言一样,具有垃圾回收机制。那么今天我们要为大家讲解的内容就是关于PHP垃圾回收机制的相关问题。希望对大家有所帮助。PHP strtotime应用经验之谈PHP memory_get_usage()管理内存PHP unset全局变量运用问题详解PHP unset()函数销毁变量教你快速实现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个请求中只有一个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()删除。

引用计数基本知识
每个php变量存在一个叫做"zval"的变量容器中.一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息.第一个是"is_ref",是个bool值,用来标识这个变量是否是属于引用集合(reference set).通过这个字节,php引擎才能把普通变量和引用变量区分开.由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用.第二个额外字节是"refcount",用来表示指向这个zval变量容器的变量(也称符号即symbol)个数.

转载于:https://www.cnblogs.com/wxc1/p/6114454.html

php 垃圾回收机制 转载相关推荐

  1. 成为JavaGC专家Part I — 深入浅出Java垃圾回收机制 转载http://www.importnew.com/1993.html

    对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用. 这仅仅代表我个人的意见,但我坚信一个 ...

  2. 深入理解Java垃圾回收机制(转载https://www.cnblogs.com/andy-zcx/p/5522836.html)

    一:垃圾回收机制的意义 java  语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理.由于有个垃圾回收 ...

  3. [转载]Python垃圾回收机制--完美讲解!

    虽然是自己转载的但是是真的好的一篇图文并茂的对垃圾回收机制的讲解!!! 先来个概述,第二部分的画述才是厉害的. Garbage collection(GC) 现在的高级语言如java,c#等,都采用了 ...

  4. [转载] Python和java中的垃圾回收机制

    参考链接: Python中的垃圾回收 Python的垃圾回收机制 Python的垃圾回收机制有两种(也可以说一种:叫引用计数): 一是引用计数, 二是隔代回收. 引用计数 引用计数原理: 当数据的引用 ...

  5. 详细介绍Java垃圾回收机制

    垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机 ...

  6. JAVA中的垃圾回收机制以及其在android开发中的作用

    http://blog.csdn.net/xieqibao/article/details/6707519 这篇文章概述了JAVA中运行时数据的结构,以及垃圾回收机制的作用.在后半部分,描述了如何检测 ...

  7. 深入浅出Java垃圾回收机制

    2019独角兽企业重金招聘Python工程师标准>>> 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何 ...

  8. java垃圾回收机制_笔记 | Java垃圾回收机制

    本文经授权转载自程序员杂货铺(ID:speakFramework) 垃圾回收 最近上海的小伙伴是不是要被强垃圾分类搞疯了???哈哈哈哈 上海是个走在前列的城市啊,不光骑自行车闯红灯要被罚钱,垃圾不分类 ...

  9. JAVA垃圾回收机制概要

    垃圾回收是JAVA中的一个大知识点,也是一个著名知识点,毕竟JAVA号称自己先进性的时候总是会带上垃圾回收.于是,它也成了面试中的常客,面试官动不动的就要你解释下什么是垃圾回收,以及它的原理是什么.当 ...

最新文章

  1. YUIDoc的使用方法小结
  2. 4.3 IDEA 常用快捷键
  3. OpenGL LoadTexture加载纹理的实例
  4. c语言在线编译器_C语言和汇编语言是什么?他们之间可以有怎样的合作?为你解析...
  5. 山西农业大学计算机科学与技术分数线,2016年山西农业大学计算机科学与技术专业在湖北录取分数线...
  6. 数据科学和人工智能技术笔记 十一、线性回归
  7. Redis万字总结,面试必备
  8. 银行java程序员面试题_Java程序员面试题集精选
  9. SVN客户端下载及安装
  10. MSP430使用wifi模块发送数据(上,测试连接)
  11. access数据库剔除重复项_使用Access数据库的站长看过来——如何自动去掉数据库中的重复文章...
  12. OS开学考前临时抱佛jio(2)
  13. VM ware安装Cent OS系统并配置静态IP
  14. Win7/R2 原生VHD 启动
  15. 【粒子动画】iOS流星雨效果如何实现
  16. 币圈小白必读的6本加密货币书籍
  17. VS code安装和使用技巧
  18. HCIP考试考哪三门你知道么?
  19. ## 虚幻四引擎学习——初学者
  20. 【ML】自动编码器结合逻辑回归用于分类预测(数据+代码详细教程)

热门文章

  1. 【三分钟刷一题力扣】移除元素
  2. 三、Netty的粘包半包问题解决
  3. JAVA JDBC详解
  4. 电路基础知识 -- 三态
  5. 汇编复制字符串小程序笔记
  6. 叶县有没有计算机培训学校,叶县中等专业学校
  7. java关联查询实战_MapReduce实战(五)实现关联查询
  8. 理解Android Binder机制(1/3):驱动篇
  9. Double Free浅析
  10. k近邻回归算法python_经典算法之K近邻(回归部分)