PHP物件遞迴引用造成記憶體洩漏

2021-04-20 06:41:19 字數 515 閱讀 8094

如果php物件存在遞迴引用,就會出現記憶體洩漏。這個bug在php裡已經存在很久很久了,先讓我們來重現這個bug,**如下:

<?php

class foo

}class bar

}for ($i = 0; $i < 100; $i++)

?>

執行以上**,你會發現,記憶體使用量本應該不變才對,可實際上卻是不斷增加,unset沒有完全生效。

現在的開發很多都是基於框架進行的,應用裡存在複雜的物件關係,那麼就很可能會遇到這樣的問題,下面看看有什麼權宜之計:

<?php

class foo

function __destruct()

}class bar

}for ($i = 0; $i < 100; $i++)

?>

辦法有些醜陋,不過總算是對付過去了。幸運的是這個bug在php5.3的cvs**中已經被修復了。

C 物件陣列釋放造成記憶體洩漏

物件陣列在釋放的時候,經常會遇到兩種情況,可能會造成記憶體洩漏 例如,geopoint是乙個類 class geopoint geopoint double x,double y geopoint public void setx double x void sety double y double...

ThreadLocal造成的記憶體洩漏

在多執行緒中為了避免執行緒安全問題,常用的一種方式就是引入threadlocal變數,為何這種方式會引發執行緒安全問題呢?首先我們來看一下threadlocal是如何實現儲存執行緒私有變數的原理 threadlocal裡面定義了乙個內部類threadlocalmap static class thr...

Golang timer可能造成的記憶體洩漏

前兩天,跟一位學長交流golang 然後,他突然問我 你知道timer可能造成記憶體洩漏嘛?當時,甚是一臉懵逼,畢竟之前寫的agent測了好久,都沒發現這個問題啊。今天,就索性了解了下。這裡先說下結論,timer的誤用可能造成某些等待timer的goroutine無法正常退出,導致資源無法釋放 ps...