天天看點

python程式設計面試題及答案_python面試題及答案

.

範文

.

1. Python

是如何進行記憶體管理的?

:

從三個方面來說

,

一對象的引用計數機制

,

二垃圾回收機制

,

三記憶體池機制

一、對象的引用計數機制

python

内部使用引用計數,來保持追蹤記憶體中的對象,所有對象都有引用計數。

引用計數增加的情況:

1

,一個對象配置設定一個新名稱

2

,将其放入一個容器中(如清單、元組或字典)

引用計數減少的情況:

1

,使用

del

語句對對象别名顯示的銷毀

2

,引用超出作用域或被重新指派

sys.getrefcount( )

函數可以獲得對象的目前引用計數

多數情況下,引用計數比你猜測得要大得多。對于不可變資料(如數字和字元串)

,解釋器

會在程式的不同部分共享記憶體,以便節約記憶體。

二、垃圾回收

1

,當一個對象的引用計數歸零時,它将被垃圾收集機制處理掉。

2

當兩個對象

a

b

互相引用時,

del

語句可以減少

a

b

的引用計數,

并銷毀用于引用底

層對象的名稱。然而由于每個對象都包含一個對其他對象的應用,是以引用計數不會歸零,

對象也不會銷毀。

(進而導緻記憶體洩露)

為解決這一問題,

解釋器會定期執行一個循環檢測

器,搜尋不可通路對象的循環并删除它們。

三、記憶體池機制

Python

提供了對記憶體的垃圾收集機制,但是它将不用的記憶體放到記憶體池而不是傳回給操作

系統。

1

Pymalloc

機制。為了加速

Python

的執行效率,

Python

引入了一個記憶體池機制,用于管理

對小塊記憶體的申請和釋放。

2

Python

中所有小于

256

個位元組的對象都使用

pymalloc

實作的配置設定器,

而大的對象則使用

系統的

malloc