我有一个变量$dom
包含PHP的DOM文档的一个实例。 该变量被设置和取消一个循环内。
unset($dom)
不会释放内存,但: memory_get_usage(false)
报告说,大约10MB的唯一700B得到了释放。 memory_get_usage(true)
报告之前和之后的内存使用情况的确切相同量的unset()
我试过如下:
我检查$ DOM的引用计数是恰好一个立即之前将呼叫
unset()
xdebug_debug_zval('dom')
报道:DOM:(引用计数= 1,is_ref = 0)=类的DOMDocument {}。我想提出的解决方案DOM文档PHP内存泄漏但这无济于事。
我试图
gc_enable()
+gc_collect_cycles()
但这并没有帮助。我试着打电话
$dom->__destruct()
之前unset()
但是这将导致一个错误的DOMDocument显然没有析构函数。我递归移除了所有DOM节点之前我取消设置变量。 它并没有使最小的差值。
我尝试设置变量之前为空,再次使用它:
$dom = null
现在我的想法......任何人有一个建议,还有什么我可以尝试调试或解决这个问题?
编辑:
PHP -v用了Suhosin贴片(CLI)报告5.3.10-1ubuntu3.2
源代码可以在这里看到: https://github.com/jerico-dev/ojs/blob/dev/plugins/generic/lucene/classes/SolrWebService.inc.php#L256
前几个迭代的输出是:
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