簡體   English   中英

這是一個PHP內存泄漏?

[英]Is this a php memory leak?

更新我發現有一個特定的require_once('myobject.php'),內存增加出現了。 這個require_once()是有條件運行的。 當我將require_once()語句移出if語句以便它一直加載時,內存增加就消失了。 對我沒有意義,但問題已經解決了。 我不確定這實際上是一個“答案”,所以我將不予回答。

我在頁面的頁腳中有memory_get_usage() ,每次刷新頁面時,我都會看到它每次增加大約100k。 我的頁面加載會創建許多對象並在完成后銷毀它們。 我的父對象每個都有__destruct() ,它使用unset()和所有子對象。 具有引用返回父對象的子對象具有__destruct()unset()這些引用。

在處理頁面的不同部分之前和之后插入memory_get_usage()只會告訴我由於腳本的這一部分而添加了多少總使用量。 如何在頁面加載完成后確定哪些內存丟失而沒有回收用於垃圾回收?

我有一個全局$ _SESSION var包含存儲用戶信息的對象,但是已經使用strlen(serialize($ object))驗證了此對象的大小沒有增長。

我認為我所看到的是內存泄漏,並且腳本結束后php垃圾收集應該生效。 任何想法如何調試這個?

如果我錯了,有人可以糾正我,但如果你有一個標准的Apache和PHP設置,PHP進程在請求完成后被銷毀,所以它不會在請求之間使用內存。

所以unset()__destruct()等並不重要(跨請求)。 當PHP進程結束時,將回收所有內存。

但很可能,沒有內存泄漏,但可能會有一些會話文件的大小增加,因此下次加載時會更大。

注意:對於php-fpm,這可能有所不同,我不確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM