一 定义

unset() 函数用于销毁给定的变量。

起初我以为销毁了变量,那内存肯定就释放了,实际上并不是如此。

二 unset整个数组

<?php
$arr = [];
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
for ($i=0; $i < 1000000; $i++) { $arr[$i] = $i;
}
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
unset($arr);
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
2023-02-21 12:00:09|3| Current memory usage: 2 MB
2023-02-21 12:00:09|8| Current memory usage: 34.00390625 MB
2023-02-21 12:00:09|11| Current memory usage: 2 MB

二 unset数组成员

<?php
$arr = [];
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
for ($i=0; $i < 1000000; $i++) { $arr[$i] = $i;
}
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
/*unset($arr);
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";*/
echo count($arr);
echo "<br/>";
for ($i=0; $i < 1000000; $i++) { unset($arr[$i]);
}
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
echo count($arr);
echo "<br/>";for ($i=1000000; $i < 2000000; $i++) { $arr[$i] = $i;
}
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
echo count($arr);
echo "<br/>";
2023-02-21 12:01:45|3| Current memory usage: 2 MB
2023-02-21 12:01:45|8| Current memory usage: 34.00390625 MB
1000000
2023-02-21 12:01:45|18| Current memory usage: 34.00390625 MB
0
2023-02-21 12:01:45|27| Current memory usage: 38 MB
1000000

 

三 unset数组成员后,新开一个数组

<?php
$arr = [];
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
for ($i=0; $i < 1000000; $i++) { $arr[$i] = $i;
}
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
/*unset($arr);
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";*/
echo count($arr);
echo "<br/>";
for ($i=0; $i < 1000000; $i++) { unset($arr[$i]);
}
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
echo count($arr);
echo "<br/>";for ($i=1000000; $i < 2000000; $i++) { $arr[$i] = $i;
}
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
echo count($arr);
echo "<br/>";$arr2 = [];
for ($i=0; $i < 1000000; $i++) {$arr2[$i] = $i;
}
echo(date('Y-m-d H:i:s').'|'.__LINE__ . '| Current memory usage: ' . (memory_get_usage(true) / 1024 / 1024) . " MB" );
echo "<br/>";
2023-02-21 12:02:53|3| Current memory usage: 2 MB
2023-02-21 12:02:53|8| Current memory usage: 34.00390625 MB
1000000
2023-02-21 12:02:53|18| Current memory usage: 34.00390625 MB
0
2023-02-21 12:02:53|27| Current memory usage: 38 MB
1000000
2023-02-21 12:02:53|36| Current memory usage: 70.00390625 MB

 

四 总结

  • unset整个arr,会立即释放内存
  • unset arr的kv, 内存暂时不变。但是如果在本arr中插入新的kv,他会复用unset的内存
  • unset arr所有成员之后,新建一个arr2,会新开内存,此时系统占用内存为arr释放前➕arr2新开的内存和

PHP unset浅谈相关推荐

  1. 浅谈PHP语音里的流程控制及实现方法

    脚本由语句构成,语句靠流程控制实现功能,这一节主要介绍了几个关键字的使用. elseif elseif和else if的行为完全一样,如果用冒号来定义if/elseif条件,那就不能用两个单词的els ...

  2. 【捷哥浅谈PHP】第十一弹---NoSQL数据库之MongoDB的CURD操作(二)

    上文给大家详细介绍了下MongoDB数据库的CURD的一些基本语句,我们来回顾一下: 插入文档: SQL语句: INSERT INTO 表名 (列名.......) VALUES(对应的列值..... ...

  3. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  4. 【大话设计模式】——浅谈设计模式基础

    初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...

  5. 学校计算机机房好处,浅谈学校计算机机房维护

    浅谈学校计算机机房维护    现在的学校机房都配置了数量较多的计算机,而且机房的使用非常频繁.对于怎样维护好计算机,特别是计算机软件系统,对广大计算机教师来说是一个很重要且非常现实的问题.下面就本人在 ...

  6. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  7. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  8. 浅谈GCC预编译头技术

    浅谈GCC预编译头技术 文/jorge --谨以此文,悼念我等待MinGW编译时逝去的那些时间. 其 实刚开始编程的时候,我是丝毫不重视编译速度之类的问题的,原因很简单,因为那时我用BASICA.后来 ...

  9. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)

    震惊!世上最接地气的字符串浅谈(HASH+KMP) 笔者过于垃圾,肯定会有些错的地方,欢迎各位巨佬指正,感激不尽! 引用:LYD的蓝书,一本通,DFC的讲稿,网上各路巨佬 Luguo id: 章鱼那个 ...

最新文章

  1. 3D姿态估计|时序卷积+半监督训练
  2. 数据库拆分过程及挑战
  3. 遇到的JDBC的一个问题
  4. 移动端的开发-视口-适配
  5. 二倍图三倍图什么意思_香港读研,图什么?
  6. 如何在本地设置www.xxx.com,使其允许访问
  7. Zookeeper3.4.10使用Curator
  8. lanswich交换机远程TELNET登录
  9. 蓝牙版本avrcp怎么选_「科技犬」除了苹果AirPods,真无线蓝牙耳机到底怎么选?...
  10. 游戏本地化翻译有哪些内容需要注意
  11. 计算机是什么信号转换为什么信号,模拟信号转化为数字信号的原理是什么
  12. 新冠肺炎早期的10个症状 新冠肺炎1-14天症状特征
  13. JumpServer开源堡垒机与宝兰德中间件完成产品兼容性认证
  14. 【SCOI 2005】 骑士精神
  15. RadioButton的排版,图标样式修改和图标文字间距修改
  16. 未来计算机会取代人类吗,科普:未来人工智能真能取代人类?
  17. []==''返回?为什么?运算符==进行了什么操作?
  18. 工业大数据分析,主要有哪些应用?
  19. android:layout_margin真实含义 及 自定义复合控件 layout()执行无效的问题解决
  20. 常用Java接单平台一览

热门文章

  1. Python类多重继承
  2. python中布尔值是什么意思_Python中的布尔值
  3. 首届英才在线编程大赛-编程题回顾-java实现
  4. Stm32-SysTick详解
  5. 目标检测 Faster R-CNN运行及实时性DEMO测试
  6. Windows 10 全新界面要来了,全新的 UI 界面。
  7. 以亚马逊网购为关键词的代码
  8. 在html中使用swiper插件实现轮播图效果
  9. Ubuntu系统学习笔记(完整版)
  10. 轻松制作儿童趣味算术软件 - imsoft.cnblogs