`
finux
  • 浏览: 200111 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PyIntObject的对象池技术太可怕了~

阅读更多

最近在读《Python源码剖析》,只是看到PyIntObject的对象池技术而已,根据书中的讲解及源码可知:一旦系统中的某块内存被Python申请用于整数对象,那么这块内存在Python进程结束之前,将永远不会得到释放。

 

这样一句话实在太可怕了,于是做了个小小的实验:

假设sizeof(PyIntObject) = 12byte,那么1GB = 1024 * 1024 * 1024 / 12个PyIntObject,既然如此,试试运行下面的Python语句:

for i in range(1024 * 1024 * 1024 / 12):
	pass

效果怎么样,嘻嘻,机器卡死了吧~

呵呵,再看看你机器的CPU及内存使用情况看看,嘻嘻,没被吓着吧~

 

下面看下我的机器运行的结果:

  • 大小: 93.1 KB
1
0
分享到:
评论
6 楼 finux 2011-01-13  
cnSpirit 写道
我用的是python 3.1,完全没有楼主的问题。。。

Python 3.X应该是不会有该问题的,她连编码的问题应该也不会有吧。
5 楼 cnSpirit 2011-01-13  
我用的是python 3.1,完全没有楼主的问题。。。
4 楼 lzyzizi 2010-07-14  
range()不是这样用的吧,对于你这种情况应该使用xrange,绝对不会卡死。
3 楼 finux 2010-07-04  
jasongreen 写道
x=range(1024*1024*1024/12)
x=None
import gc
gc.collect()

别for了,直接在shell下试试这个。确实很恐怖

呵呵,1G的内存呀~
2 楼 jasongreen 2010-07-04  
x=range(1024*1024*12)
x=range(1024*1024*12)
x=range(1024*1024*12*2)
x=range(1024*1024*12*2)

试试这个,其实也没那么可怕。
1 楼 jasongreen 2010-07-04  
x=range(1024*1024*1024/12)
x=None
import gc
gc.collect()

别for了,直接在shell下试试这个。确实很恐怖

相关推荐

    Python源码剖析

    整数对象PyIntObject(1) 整数对象PyIntObject(2) 整数对象PyIntObject(3) PyListObject对象(1) PyListObject对象(2) PyListObject对象(3) 字典对象PyDictObject(1) 字典对象PyDictObject(2) 字典对象PyDictObject(3)...

    Python整数对象实现原理详解

    整数对象在Python内部用PyIntObject结构体表示: typedef struct { PyObject_HEAD long ob_ival; } PyIntObject; PyObject_HEAD宏中定义的两个属性分别是: int ob_refcnt; struct _typeobject *ob_type; 这两个...

    node-v16.12.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    试用Dev Containers的示例项目-Go

    计算机技术是指评价计算机系统的各种知识和技能的总称。它涵盖了计算机硬件、软件、网络和信息安全等方面。计算机技术的发展使我们能够进行高效的数据处理、信息存储和传输。现代计算机技术包括操作系统、数据库管理、编程语言、算法设计等。同时,人工智能、云计算和大数据等新兴技术也在不断推动计算机技术的进步。计算机技术的应用广泛,涵盖了各个领域,如商业、医疗、教育和娱乐等。随着计算机技术的不断革新,我们可以更加高效地实现预期自动化、标准化

    NTsky新闻发布v1.0测试版(提供JavaBean).zip

    ### 内容概要: 《NTsky新闻发布v1.0测试版》是一款基于 Java 开发的新闻发布系统的测试版本,旨在为新闻机构和媒体提供一个简单易用的新闻发布平台。该系统具有基本的新闻发布和管理功能,包括新闻分类、新闻编辑、新闻发布等核心功能。此外,该版本还提供了 JavaBean,使开发人员能够方便地将系统集成到自己的项目中,快速实现新闻发布的功能。 ### 适用人群: 本测试版本适用于新闻机构、媒体从业者以及Java开发人员。如果你是一家新闻机构或媒体,希望拥有一个简单易用的新闻发布平台,方便快捷地发布和管理新闻,那么这个测试版本将为你提供一个初步的体验。同时,如果你是一名Java开发人员,希望学习和掌握新闻发布系统的开发技术,并且对新闻行业有一定的了解,那么通过这个测试版本,你可以获取到一些JavaBean,并且可以参考系统的设计和实现,为你的项目开发提供参考和借鉴。无论是从业务需求还是技术学习的角度,该测试版本都将为你提供一定的帮助和支持。

    JavaScript介绍.zip

    javascript,JavaScript 最初由 Netscape 公司的 Brendan Eich 在 1995 年开发,用于 Netscape Navigator 浏览器。随着时间的推移,JavaScript 成为了网页开发中不可或缺的一部分,并且其应用范围已经远远超出了浏览器,成为了全栈开发的重要工具。

    15-21.php

    15-21.php

    汽车租赁系统(毕业设计)

    汽车租赁系统后端采用了spring,spring mvc,mybatis框架,前端使用了layui,界面美观。 包含功能:客户管理,车辆管理,出租,出租单管理,汽车入库,检查单管理,菜单管理,用户管理,角色管理,日志管理,统计分析等。 该毕业设计功能涵盖了大部分汽车租赁中的业务需求,特点是业务功能较多,有助于学生加深业务到技术的理解。

    设计模式_行为型_访问者模式.md

    设计模式_行为型_访问者模式

    HTML25-创意网站产品主页模板官网落地页APP主页产品宣传页源码 landing静态页面.zip

    HTML25-创意网站产品主页模板官网落地页APP主页产品宣传页源码 landing静态页面

    快手弹幕采集学习源码!!

    快手弹幕采集学习源码

    general-exporter windows

    自定义监控项 Windows 二进制文件

    数据可视化大屏展示系统HTML模板源码 大数据大屏展示源码 VUE.zip

    数据可视化大屏展示系统HTML模板源码 大数据大屏展示源码 VUE

    node-v18.2.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    这个项目是用于个人参加浙江大学移动创新竞赛而使用。.zip

    这个项目是用于个人参加浙江大学移动创新竞赛而使用。

    2023年全国职业院校技能大赛“区块链技术应用赛项”国赛正式赛题

    2023年全国职业院校技能大赛“区块链技术应用赛项”国赛正式赛题 高职 全国职业院校技能大赛 正式赛题

    基于stm32的智能家居系统

    基于stm32的智能家居系统 基于stm32的智能家居系统

    21九章空间解析几何.pdf

    21九章空间解析几何.pdf

    吴恩达机器学习python版本代码(完结).zip

    吴恩达机器学习python版本代码(完结)

    HTML21-印刷模板官网落地页APP主页产品宣传页源码 landing静态页面.zip

    HTML21-印刷模板官网落地页APP主页产品宣传页源码 landing静态页面

Global site tag (gtag.js) - Google Analytics