日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php unset 多可以什么_PHP unset() 详解

發(fā)布時(shí)間:2025/3/20 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php unset 多可以什么_PHP unset() 详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們對unset() 這個(gè)函數(shù)的作用的了解大概就是它可以銷毀一個(gè)變量,釋放內(nèi)存,這種理解并沒有錯(cuò),可能就是不夠深入,接下來我通過幾個(gè)例子向大家展示下unset一個(gè)變量后真正發(fā)生的一些事情。以下的代碼是在linux+php7.1環(huán)境下運(yùn)行

$s = str_repeat('1',256);

$m = memory_get_usage();

unset($s);

$mm = memory_get_usage();

echo $m-$mm;

輸出結(jié)果如下:

釋放了48個(gè)字節(jié)的內(nèi)存,在說明結(jié)果之前我先帶大家了解下mermory_get_usage()函數(shù),官方的解釋是:當(dāng)函數(shù)的參數(shù)不設(shè)置或者設(shè)置為false時(shí)返回的是分配給當(dāng)前php腳本的內(nèi)存量,如果設(shè)置為true的話返回的是系統(tǒng)分配總的內(nèi)存尺寸,包括未使用的頁,那我們接著來看下當(dāng)設(shè)置為true時(shí)的結(jié)果是怎樣的?

$s = str_repeat('1',256);

$m = memory_get_usage(true);

unset($s);

$mm = memory_get_usage(true);

echo $m-$mm;

輸出結(jié)果如下:

我們發(fā)現(xiàn)結(jié)果是0,那我們可以似乎可以得出一個(gè)結(jié)論是:unset掉一個(gè)變量后,當(dāng)前腳本的內(nèi)存量有所增加,內(nèi)存被釋放,但是這部分內(nèi)存沒有被我們的系統(tǒng)回收,那什么時(shí)候會(huì)被系統(tǒng)(OS)回收呢?

$s = str_repeat('1',2100000);

$m = memory_get_usage(true);

unset($s);

$mm = memory_get_usage(true);

echo $m-$mm;

輸出結(jié)果如下:

我們發(fā)現(xiàn)這個(gè)結(jié)果不再是0,說明內(nèi)存被系統(tǒng)回收了,也就是說我們unset掉的變量所占的內(nèi)存大到一定程度時(shí)才會(huì)被系統(tǒng)回收,至于這個(gè)界限是多少,本人在不同的操作系統(tǒng)下運(yùn)行的結(jié)果不同,可能與當(dāng)前操作系統(tǒng)(OS)內(nèi)存的大小和分配給當(dāng)前腳本內(nèi)存大小有關(guān)系。其實(shí),當(dāng)調(diào)用emalloc函數(shù)申請內(nèi)存的時(shí)候php并不是簡單的想OS要內(nèi)存,而是每次申請都會(huì)OS會(huì)分配一塊比較大的內(nèi)存,當(dāng)有申請者的時(shí)候再分配其中的一塊給它。另外,在測試中我們還發(fā)現(xiàn)釋放的內(nèi)存有的時(shí)候小于我們申請的內(nèi)存。

$m0 = memory_get_usage();

echo '申請前:'.$m0."\r\n";

$s = str_repeat('1',100);

$m = memory_get_usage();

echo '申請后:'.$m."\r\n";

unset($s);

$mm = memory_get_usage();

echo '釋放后:'.$mm."\r\n";

輸出結(jié)果如下:

再來看個(gè)例子:

$m0 = memory_get_usage();

echo '申請前:'.$m0."\r\n";

//$s = str_repeat('1',100);

$s = 'new string new string new string new string new string new string new string';

$m = memory_get_usage();

echo '申請后:'.$m."\r\n";

unset($s);

$mm = memory_get_usage();

echo '釋放后:'.$mm."\r\n";

輸出結(jié)果如下:

這兩個(gè)例子的區(qū)別僅僅在于變量s的值一個(gè)是函數(shù)創(chuàng)建后再賦值的,一個(gè)是直接賦值的,第一個(gè)例子變量申請了192個(gè)字節(jié),釋放的時(shí)候只釋放了160個(gè)字節(jié),第二個(gè)例子申請前和釋放后是一樣的,那這是為什么呢?我們先看下php是怎么給我們分配內(nèi)存的

1.為變量名分配內(nèi)存,存入符號(hào)表

2.為變量值分配內(nèi)存

在揭曉答案前在看兩個(gè)東東,一個(gè)是例1中變量s的zval結(jié)構(gòu),一個(gè)是例2中的zval結(jié)構(gòu):

發(fā)現(xiàn)通過函數(shù)創(chuàng)建的變量s的refcount=1,而直接賦值的變量s的refount=0,說明unset掉一個(gè)變量后只釋放了符號(hào)表s,s的值所占的內(nèi)存并沒有被釋放。

好了,以上就是我對php unset()函數(shù)的總結(jié)。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的php unset 多可以什么_PHP unset() 详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲免费专区 | 在线免费日韩 | xxxxⅹxxxhd日本8hd | 成人在线91| 亚洲24p | 夜夜涩| 99久久精品无免国产免费 | 欧美在线精品一区 | 欧美夫妻性生活视频 | 久久精品中文 | 波多野结衣大片 | 免费的黄色一级片 | 人人爽人人爽人人片av | 中文字幕第80页 | 亚州av在线 | 天天干夜夜想 | 午夜神马福利 | 欧美特级黄色大片 | 国产91久久婷婷一区二区 | 亚洲午夜免费 | 亚洲精品国产精品乱码桃花 | 成人av资源在线 | 麻豆黄色一级片 | av网站入口 | 激情成人av | 婷婷激情视频 | 欧美亚洲在线观看 | 蜜桃视频欧美 | 日韩乱淫| 欧美综合一区二区 | 秋霞福利网 | 美女视频一区 | 国产丰满麻豆 | 丁香婷婷综合激情 | 亚洲欧美电影 | 色人阁五月天 | 中国女人毛片 | 黄色片视频免费在线观看 | 久久久久1| 国产欧美高清 | www.欧美视频 | 91免费版在线看 | ass精品国模裸体pics | 福利视频在线看 | 黄色大片毛片 | 国产一区二区三区高清 | 先锋av网| 天天看天天摸 | 成人在线超碰 | 日韩毛片高清在线播放 | 国产精品九九九 | 91caob| 麻豆网页 | 亚洲国内自拍 | 日本一区二区三区视频在线播放 | 欧美一级三级 | 成在线人免费视频 | 欧美三级国产 | 久久久极品 | 六月色婷 | 日韩在线观看免费 | 亚洲 欧美 日韩 在线 | 影音先锋丝袜制服 | 激情自拍偷拍 | 99福利视频导航 | 91av日本 | 国产做爰高潮呻吟视频 | 午夜亚洲精品 | 欧洲亚洲另类 | 欧美激情自拍偷拍 | 亚洲精品乱码久久久久久蜜桃不卡 | 在线观看欧美国产 | 在线观看av毛片 | 182tv午夜| 成年男女免费视频 | 成人在线精品 | 亚洲の无码国产の无码步美 | 极品美女扒开粉嫩小泬 | 国模私拍大尺度裸体av | 精品国产乱码久久久久久久软件 | 国产成人高清在线 | 国产av一区二区三区传媒 | 色天天综合网 | 啪啪网视频 | 欧美美女性生活 | 在线观看污视频网站 | av国产成人 | 香蕉久久网 | 用力挺进新婚白嫩少妇 | 亚洲午夜久久久久 | 久久久精品在线观看 | 已满十八岁免费观看 | 91大神在线观看视频 | 男男h黄动漫啪啪无遮挡软件 | 中日韩精品在线 | 草草视频在线播放 | 国产精品视频一区二区三 | 乱色熟女综合一区二区三区 | 激情91 |