# 什么是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
- 簡歷
- 面試問題
- 知識點
- 真題