我有一个$dom包含 PHP DOMDocument 实例的变量。此变量正在循环中设置和取消设置。
unset($dom)但是不会释放内存:memory_get_usage(false)报告说只有大约 10MB 的 700B 被释放。memory_get_usage(true)报告之前和之后完全相同的内存使用量unset()。
我尝试了以下方法:
- unset()我检查了 $dom 的引用计数在调用:- xdebug_debug_zval('dom')reports: dom: (refcount=1, is_ref=0)=class DOMDocument { }之前正好是1。
- 我尝试了DOMDocument PHP Memory Leak中提出的解决方案,但这无济于事。 
- 我试过 - gc_enable()+- gc_collect_cycles()。但这也无济于事。
- $dom->__destruct()我之前尝试过调用,- unset()但这会导致错误,因为 DOMDocument 显然没有析构函数。
- 在取消设置变量之前,我递归地删除了 DOM 中的所有节点。它并没有带来丝毫的不同。 
- 在重新使用它之前,我尝试将变量设置为 null: - $dom = null
现在我没有想法......有人建议我还能尝试调试或解决这个问题吗?
编辑:
- php -v 使用 Suhosin-Patch (cli) 报告 5.3.10-1ubuntu3.2 
- 前几次迭代的输出是: - before object creation: 19292296 after object creation: 29849832 before unset: 30055232 after unset: 30054448 before object creation: 29849592 after object creation: 39858840 before unset: 40079920 after unset: 40079136 before object creation: 39858272 after object creation: 49923216 before unset: 50136448 after unset: 50135664