# 什么是php
一种通用开源脚本语言, 主要用于web开发领域;
全称: Hypertext Preprocessor
大写PHP和小写php的区别?
PHP: 一种编程语言, php:PHP语言的Zend官方实现
# **cow机制**(copy on write):
> 当变量传递(除引用变量外)的时候,只有先前原始变量发生write 的时候, 才会重新分配内存给新变量
# **变量容器zval**:
*****
xdebug_debug_zval();
# **垃圾回收机制 GC**
*****
**什么是垃圾**:
本质是引用计数
php5.3之前判断垃圾的标准是看:是否有变量名指向变量容器zval,也就是说看refcount是否等于0,若没有则认为是垃圾释放掉。
但是会因为环形引用,产生内存泄漏。
所以从php5.3开始的GC中,对垃圾的说明如下,
1.当refcount增加的时候,肯定不是垃圾,不用放到缓冲区中。
2.当refcount减少到0的时候,肯定是垃圾,zval会被立即释放,不是GC处理的垃圾对象不会进入缓冲区
3.当refcount减少之后大于0的时候,可能是垃圾,会进入缓冲区进入处理。
**垃圾回收算法**:
1.对每个跟缓冲区的跟zval进行深度优先遍历,将遍历到的所有的zval的refcount进行减一操作,减一后要对这个zval标注为“已减”(为避免对同一个zval多次减一)
2.再去深度优先遍历所有的zval,查看其refcount是否为0,如果是保持不变,不是的话再给refcount加1
3.将所有的zval从缓冲区中清除,然后销毁所有refcount为0的zval,并收回其内存。
**垃圾回收算法的特性**:
1.可以解决环形引用的问题
2.可以将内存泄漏控制在一定的阀值下
3.并不是每次refcount减少时都会进入回收周期,而是在跟缓冲区满额后再开始垃圾回收的。
参考文档:
[https://www.cnblogs.com/chenhaoyu/p/10937715.html](https://www.cnblogs.com/chenhaoyu/p/10937715.html)
# **自动加载机制**
*****
- 简介
- html
- js
- 正则表达式
- php
- 开发环境和配置
- PHP基础
- 变量
- 数据类型
- 函数
- 常量
- 运算符
- 流程控制
- 文件
- 异常处理
- 高级
- 会话控制
- 面向对象
- 框架
- laravel
- ThinkPhp
- Yii 易
- Yaf 亚夫
- Swooole
- python
- 数据库
- 基础
- 索引
- 倒排索引
- 关联sql
- 事务
- 锁
- 优化
- 安全性
- 数据库类型
- linux
- 基础命令
- shell脚本
- 操作系统和网络
- 版本控制器
- git
- git 命令行
- 小乌龟git的使用
- git 基础命令
- svn
- svn 命令行
- 小乌龟svn的使用
- 网络
- OSI七层模型
- 网络协议
- https协议
- TCP UTP协议
- 数据结构和算法
- 算法
- 时间复杂度
- 空间复杂度
- 排序算法
- 查找算法
- 数据结构
- 系统设计和架构
- 缓存系统
- redis
- lua
- memcached
- redis与memcached的区别
- 消息队列
- kafka
- 设计模式
- 单例模式
- 高并发和大流量设计
- 流量优化
- 前端优化
- web防盗链
- CDN加速
- 独立的图片服务器
- 服务器端
- 动态语言静态化
- 并发处理
- 数据库优化
- web服务器负载均衡
- 面试
- 项目整理
- novonordisk.micego.com
- nnm.micego.com
- www.dawang.tv
- lottery.3lotto.cn
- www.gpquan.cn
- in-tao.com
- 简历
- 面试问题
- 知识点
- 真题