[英]python: memory shared between StringIO?
如果這樣做,是否在StringIO之間共享內存? 我的感覺是因為python進程的內存沒有在第6行增加。
In [1]: from StringIO import StringIO
In [2]: s = StringIO()
In [3]: s.write('abcd'*10000000) # memory increases
In [4]: s.tell()
Out[4]: 40000000
In [5]: s.seek(0)
In [6]: a = StringIO(s.read()) # memory DOES NOT increase
In [7]: a.tell()
Out[7]: 0
In [8]: a.read(10)
Out[8]: 'abcdabcdab'
但是我擔心的是,當我刪除這兩個變量時,python進程的內存消耗不再減少了……為什么? 此代碼是否會造成內存泄漏?
當我只使用一個變量時,刪除該變量后內存釋放良好。
我很好奇這是怎么回事。 謝謝。
一個StringIO()
對象不會使傳遞給它一個字符串的副本。 不需要,因為字符串不是可變的。
從StringIO()
對象StringIO()
塊讀取數據時,將創建新的字符串對象,這些對象是原始輸入字符串的子字符串。
釋放對象時,內存消耗永遠不會立即下降。 內存分配僅根據OS的需要重新分配,許多類型的(小)對象可以由Python插入以提高效率,並且永遠不會釋放,只能重用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.