小整数对象池 (在python内置了)
整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。
Python对小整数的定义是[-5,257]这些整数对象是提前建立好的,不会被垃圾回收。在一个Python的程序中,所有位于这个范围内的整数使用的都是同一个对象。
同理,单个字母也是这样的。
但是当定义2个相同的字符串时,引用计数为0,触发垃圾回收

intern机制
a1="helloworld"
a2="helloworld"
a3="helloworld"
a4="helloworld"
a5="helloworld"
a6="helloworld"
a7="helloworld"
a8="helloworld"
a9="helloworld"

python会不会创建9个对象呢?在内存中会不会开辟9个"helloworld"的内存空间呢?想一下,如果是这样的话,我们写10000个对象,
那他岂不是开辟了10000个helloworld所占的内存空间了呢?如果真这样,内存不就爆了吗?所以python中有这样一个机制-----intern
机制,让他只占用一个"helloworld"所占的内存空间。靠引用计数去维护何时释放。
a="hello"
b="hello"

id(a)
4555765776
id(b)
4555765776

a = "hello world"
b = "hello world"
id(a)
4553372528
id(b)
4555786352

python默认只会对由字符"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"构成字符串进行intern。
如果是

a = '!@#'
b= '!@#'
id(a)
45517120
id(b)
45517216

最新文章

  1. 1-1 node 基础
  2. 零基础如何系统学习Java Web
  3. jQuery插件之Cookie
  4. Linux后台进程管理的一些命令小结
  5. Oralce 按分隔符把一列转成多行
  6. C# linq to xml
  7. DropDownList四级联动
  8. linux $ 类型变量 及Makefile 中 $ 类型变量的含义
  9. gulp快速入门&初体验
  10. 剑指offer_(17)
  11. bzoj 2002 弹飞绵羊 分块
  12. 关于MySQL数据库的安装和卸载
  13. 定制你自己的vim编辑器
  14. 在idea中设置记住git的用户名和密码
  15. [js]this关键字代表当前执行的主体
  16. [JDBC]你真的会正确关闭connection吗?
  17. JSON.parse()与JSON.stringify()高级用法
  18. Mongo.exe 无法定位程序输入点terminate于动态链接库 *.dll的解决办法
  19. nginx服务器去掉url中的index.php 和 配置path_info
  20. SpringMVC请求参数和响应结果全局加密和解密

热门文章

  1. android Keycode 完全对照表
  2. Hadoop2.6.5集群搭建
  3. Echarts动态加载柱状图的实例
  4. 使用Inent 携带 Bundle 携带 数组 传递给另外一个activity
  5. asp 月末 月初
  6. ORA-01461的解决过程~~
  7. scala快速一览
  8. 重识linux-守护进程,系统服务,daemons
  9. 启动标志 和launchMode
  10. 廖雪峰老师Python3教程练习整理