相关疑难解决方法(0)

防止Perl中的循环引用内存泄漏

我最近问了一个关于在Perl中覆盖对象和内存管理的问题.我收到的一个答案告诉我,我最近写的脚本可能有问题.

我有一个脚本,有一些非常复杂的数据结构,有许多parent->child / child->parent关系.这也意味着有许多对象具有循环引用.根据这个答案,循环引用可以"欺骗"Perl的引用计数机制,如果没有正确处理它们会导致内存泄漏.


循环引用的示例:

       +-----------------------------------------------------+
       |                                                     |
       +-->+============+    +==========+                    |
           [ Reference ----->[ Blessed  ]                    |
$parent -->+============+    [ Hash     ]                    |
                             [          ]   +==========+     |
                             [ children --->[ Array    ]     |
                             [          ]   [          ]     |
                             +==========+   [ 0: ---------+  |
                                            [          ]  |  |
                                            +==========+  |  |
                                                          |  |
       +--------------------------------------------------+  |
       |                                                     |
       +-->+============+    +==========+                    |
           [ Reference ----->[ Blessed  ]                    |
$child --->+============+    [ Hash     ]                    |
                             [          ]                    | …
Run Code Online (Sandbox Code Playgroud)

oop perl memory-leaks cyclic-reference

10
推荐指数
1
解决办法
304
查看次数

标签 统计

cyclic-reference ×1

memory-leaks ×1

oop ×1

perl ×1