python中的記憶體管理

2021-08-15 08:07:16 字數 2278 閱讀 6551

# -*- coding: utf-8 -*-

# python

中自動管理記憶體的

# 自動管理記憶體程式語言 例如:

object-c python

# 手動管理記憶體程式語言 例如:

c# python

中的記憶體管理採用的

'引用計數

'的方式

, 如果乙個物件的引用計數為

0,該物件占用的記憶體會被

python

直譯器清空,物件也會消失,如果乙個物件的引用計數超過

0,這個物件會一直存放在記憶體中

# python

中是自動管理記憶體的,實際上是通過

"引用計數

"的方式來管理記憶體。當乙個物件被建立出來的時候,引用計數為

1,當物件被其他物件引用時,引用計數會加

1,當物件的引用被刪除時,引用計數會

-1,當物件的引用計數為

0時,該物件所在記憶體會被系統在合適時間**

'''物件在記憶體無法釋放的情況,稱之為記憶體洩露,記憶體洩露會導致程式占用記憶體過多,程式出現卡頓的情況,嚴重情況可能會導致記憶體崩潰,程式結束或者閃退

物件多次刪除,導致引用計數過渡減少,在之後的**中有可能導致該物件不可用

'''# sys

作業系統模組

import sys

class people(object):

pass

# 當建立乙個物件時,這個物件的計數為

1p1 = people()

# 通過個函式可以檢視物件的引用計數

# ps

:在這查到的是

2,自己建立物件的時候

+1,編譯程式的時候,直譯器

+1(不需要我們管理

)number = sys.getrefcount(p1)

print(number)

# 當物件被引用的時候,引用計數會

+1p2 = p1

del p1

del p2

# print(p2)

# print(sys.getrefcount(p1))

# #

把物件放入列表中,也會造成計數

+1# list1 = [p1]

# print(sys.getrefcount(p1))

# #

建立物件

# p3 = people()

# # 給p3

新增obj

屬性,屬性值是乙個

p1物件 也會計數

+1# p3.obj = p1

# print(sys.getrefcount(p1))

# 當引用被刪除的時候,引用計數

-1# del p2

# print(sys.getrefcount(p1))

## #

從列表中移除 引用計數

-1# del list1[0]

# print(sys.getrefcount(p1))

## #

刪除物件屬性

# del p3.obj

# print(sys.getrefcount(p1))

# #

刪除建立時的引用計數,

p1物件會被從記憶體中移除

## del p1

# #

刪除之後,物件不可用

# print(sys.getrefcount(p1))

# 刪除物件

class man(object):

# 當物件被建立的時候,回去執行初始化函式

def

__init__(self):

print('man

類的物件被建立了

') def eat(self):

print('

執行了man

類的eat

函式...')

# 當物件被刪除

(清除記憶體

)的時候,會執行

del函式

def

__del__(self):

# 可以在物件被刪除時,新增一些功能:例如,儲存資料

.....

print('man

類的物件被清除了

')m = man()

m.eat()

m1 = m

# 手動刪除物件 引用計數

-1del m

m1.eat()

# 手動刪除物件 應用計數

-1 為0

物件被清除

del m1

Python中的記憶體管理機制

python引用了乙個記憶體池 memory pool 機制,即pymalloc機制,用於管理對小塊記憶體的申請和釋放 python和其他高階語言一樣,會進行自動的記憶體管理。它使用引用計數機制檢測為物件分配的記憶體是否可以被釋放。然後,在python中記憶體永遠不會返還給作業系統,python會持...

Python的記憶體管理

最近在學deeplearning相關的內容,找到了deeplearning.net這個 上面的tutorial主要是介紹深度學習演算法,上面的實現是用python語言,用到的庫主要有numpy和theano。numpy大家比較熟悉了,不再細說 theano是乙個進行數學計算的庫,使用者可以更好的定義...

Python的記憶體管理

首先 記憶體管理在wiki上的定義為 記憶體管理是應用於計算機記憶體的一種資源管理形式。記憶體管理的基本要求是提供一種方法,可根據它們的請求為程式動態分配記憶體的一部分,並在不再需要時將其釋放以供重用。那麼,簡單的理解的話,記憶體管理就是控制記憶體的釋放和記憶體的分配 在看完了python官方文件後...