<dfn id="hnpfr"><dfn id="hnpfr"><nobr id="hnpfr"></nobr></dfn></dfn>

        <sub id="hnpfr"><listing id="hnpfr"><menuitem id="hnpfr"></menuitem></listing></sub>

            <form id="hnpfr"></form>

              <form id="hnpfr"><form id="hnpfr"><nobr id="hnpfr"></nobr></form></form>

                          <form id="hnpfr"></form>

                          Python面試題:Python是如何進行內存管理的?

                          一、垃圾回收:

                              python不像C++,Java等語言一樣,他們可以不用事先聲明變量類型而直接對變量進行賦值。對python語言來講,對象的類型和內存都是在運行時確定的。這也是為什么我們稱python語言為動態類型的原因(這里我們把動態類型語言可以簡單的歸結為對變量內存地址的分配是在運行時自動判斷變量類型并對變量進行賦值)。

                          二、引用計數:

                              python采用了類似windows內核對象一樣的方式來對內存進行管理。每一個對象,都維護這一個對指向該對象的引用的計數。當變量被綁定在一個對象上的時候,該變量的引用計數就是1,(還有另外一些情況也會導致變量引用計數的增加),系統會自動維護這些標簽,并定時掃描,當某標簽的引用計數變為0的時候,該對象就會被回收。

                          三、內存池機制

                              python的內存機制成金字塔形:

                              第-1,-2層主要有操作系統進行操作;

                              第0層是C中的malloc,free等內存分配和釋放函數進行操作;

                              第1層和第2層是內存池,有python的接口函數PyMem_Malloc函數實現,當對象小于256字節時由該層直接分配內存;

                              第三層是最上層,也就是我們對python對象的直接操作;

                          在C中如果頻繁的調用malloc與free時,是會產生性能問題的,在加上頻繁的分配和釋放小塊的內存會產生內存碎片。

                          python在這里主要干的工作有:

                          如果請求分配的內存在1~256字節之間就使用自己的內存管理系統,否則直接使用malloc。

                          這里還是會調用malloc分配內存,但每次回分配一塊大小為256字節的大塊內存。

                          經由內存池登記的內存到最后還是會回收到內存池,并不會調用C的free釋放掉,以便下次使用。對于簡單的python對象,例如數值、字符串、元組(tuple不允許被更改)采用的是復制的方式(深拷貝),也就是說當講另一個變量B賦值給變量A時,雖然A和B的內存空間仍然相同,但是當A的值發生變化時,會重新給A分配空間,A和B的地址變得不再相同。

                          【返回原文】

                          相關新聞

                          聯系我們

                          400-080-6560

                          在線咨詢:點擊這里給我發消息

                          郵件:work@magedu.com

                          工作時間:周一至周日,09:00-18:30

                          QR code
                          瑞祥祥云瑞祥祥云平台瑞祥祥云主页瑞祥祥云网站瑞祥祥云官网瑞祥祥云娱乐瑞祥祥云开户瑞祥祥云注册瑞祥祥云是真的吗瑞祥祥云登入瑞祥祥云快三瑞祥祥云时时彩瑞祥祥云手机app下载瑞祥祥云开奖 黄南 | 白沙 | 蓬莱 | 益阳 | 阿坝 | 雅安 | 承德 | 台北 | 开封 | 四川成都 | 北海 | 泰兴 | 山东青岛 | 莱芜 | 新余 | 镇江 | 阿拉尔 | 内蒙古呼和浩特 | 安岳 | 朝阳 | 防城港 | 呼伦贝尔 | 平潭 | 沛县 | 潮州 | 三门峡 | 朔州 | 三沙 | 晋江 | 日照 | 四川成都 | 开封 | 甘孜 | 淮南 | 呼伦贝尔 | 白城 | 自贡 | 咸阳 | 新疆乌鲁木齐 | 象山 | 漳州 | 河南郑州 | 韶关 | 海丰 | 怒江 | 定西 | 张北 | 东营 | 涿州 | 林芝 | 陇南 | 博尔塔拉 | 靖江 | 济源 | 临汾 | 洛阳 | 唐山 | 长垣 | 淮南 | 包头 | 金昌 | 承德 | 遵义 | 淮北 | 临沂 | 桓台 | 吐鲁番 | 桐乡 | 新沂 | 商丘 | 抚顺 | 澳门澳门 | 张家口 | 青海西宁 | 神木 | 香港香港 | 哈密 | 宜昌 | 鄢陵 | 宣城 | 厦门 | 济南 | 南安 | 项城 | 咸宁 | 本溪 | 安阳 | 昌都 | 乌兰察布 | 蓬莱 | 蚌埠 | 武夷山 | 邳州 | 邵阳 | 涿州 | 呼伦贝尔 | 绵阳 | 库尔勒 | 贵州贵阳 | 涿州 | 马鞍山 | 莒县 | 兴安盟 | 瑞安 | 昌吉 | 承德 | 江门 | 烟台 | 仙桃 | 晋城 | 苍南 | 大连 | 眉山 | 池州 | 濮阳 | 五家渠 | 新乡 | 内江 | 铜陵 | 清远 | 潮州 | 宣城 | 临汾 | 宜春 | 石河子 | 贵港 | 玉环 | 沭阳 | 咸宁 | 海宁 | 松原 | 梅州 | 常德 | 通辽 | 孝感 | 鹤壁 | 日喀则 | 仁怀 | 龙岩 | 寿光 | 宁夏银川 | 桓台 | 大理 | 牡丹江 | 温岭 | 威海 | 德宏 | 新沂 | 呼伦贝尔 | 枣庄 | 任丘 | 楚雄 | 馆陶 | 东莞 | 高雄 | 潍坊 | 瑞安 | 韶关 | 晋中 | 巴中 | 日喀则 | 三沙 | 定州 | 黑龙江哈尔滨 | 哈密 | 台州 | 惠州 | 宜宾 | 如皋 | 乌海 | 铜陵 | 邵阳 | 姜堰 | 广西南宁 | 台山 | 绵阳 | 巢湖 | 临猗 | 改则 | 迁安市 | 葫芦岛 | 晋中 | 济源 | 通化 | 海宁 | 铜川 | 吉林 | 衡阳 | 锡林郭勒 | 海门 | 武安 | 启东 | 济源 | 甘肃兰州 | 桐乡 | 保亭 | 启东 | 正定 | 山东青岛 | 南京 | 塔城 | 金昌 | 泸州 | 漳州 | 保定 | 烟台 | 台北 |