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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python是基于什么的内存管理方式_为什么说Python采用的是基于值的内存管理模式...

發布時間:2024/1/1 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python是基于什么的内存管理方式_为什么说Python采用的是基于值的内存管理模式... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內存管理架構:

1.python的內存管理機制由兩部分組成,其由PYMALLOC_DEBUG控制,在debug模式下的內存管理機制和正常模式下的內存管理模式。

2.python的內存管理機制可以抽象成一種層次結構:

最底層:操作系統提供的內存管理接口,由其實現并維護

第一層:對最底層的包裝,為python提供統一的原生內存管理接口和面向python中類型的內存分配器。簡單地說,C語言中的malloc是需要用戶自行提供申請空間的大小,而python可以由類型和數量自行判斷內存空間大小

第二層:提供創建python對象的接口

第三層:為常用對象提供更抽象的內存管理策略,如整數,字符串,主要是對象緩存池機制 小塊空間的內存池

1.python的內存池機制,用于小塊內存的申請和釋放,同樣也有四層層次結構組成,分別是block,pool,arena和內存池。

第一層block:確定大小的內存塊,大小有相應的劃分且有上限

第二層pool:一組block的集合叫pool,最重要的pool_header和freeblock鏈表

第三層arena:一組pool的集合,分已使用和未使用兩種狀態

第四層內存池:Python中當申請內存超過某個值就啟動malloc行為,當低于這個值才進行內存池申請內存,根據申請內存的大小獲得對應的序號,如果已使用的pool中有可用的pool,則用其分配block,否則從已用arena中獲取pool,否則申請arena,成功獲取后開始初始化 循環引用的垃圾收集

1.python中的垃圾回收是基于對象的引用計數實現的,也就是說對象的生命周期是由對象的引用計數管理的。同時帶來效率的降低,所以引入內存池機制,使得常用對象能更高效

2.引用計數機制致命缺點是在循環引用下容易引起內存泄漏,為了克服循環引用帶來的問題,引入了其他垃圾回收機制,也就是主流垃圾收集技術中的標記(清除和分代收集技術)

3.三色標記模型,也就是標記--清除技術,步驟如下:

先找到根對象然后遍歷搜索,能到達的不可刪除,不能到達的可能刪除

4.垃圾收集機制針對循環引用的出現,PyIntObject,PyStringObject是不會出現引用的,只有container對象才會出現引用,所以補充的垃圾回收機制是對容器類型對象創建收集鏈表,清除鏈表中循環引用的對象

5.分化收集技術是java采用的垃圾回收機制,就是將內存根據生命周期長短進行內存分化制,python將內存分成三個化,有一個化滿了就將其他化連接到其后進行垃圾回收

6.需要注意的是對類對象的回收,在類中創建del方法容易引起無法回收的情況

總結

以上是生活随笔為你收集整理的python是基于什么的内存管理方式_为什么说Python采用的是基于值的内存管理模式...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。