来自匹配运算符的 Perl 内存泄漏

发布于 2024-12-07 02:48:32 字数 516 浏览 0 评论 0原文

在调查长时间运行的 Perl 程序的内存泄漏时,我尝试使用 Test::LeakTrace

查看它报告的泄漏之一,我可以将泄漏代码缩小到:

/$?/

因此运行: perl -MTest::LeakTrace::Script -e'/$?/' prints:

leaked SCALAR( 0x10d3d48) 来自 -e 第 1 行。

这是为什么,我需要担心吗?

更新:还尝试了 Devel::LeakTrace::Fast,它不会抱怨相同的代码。

While investigating a long running perl program for memory leaks I tried to use Test::LeakTrace.

Looking at one of the leaks it reports I can narrow down the leaking code to just:

/$?/

So running: perl -MTest::LeakTrace::Script -e'/$?/' prints:

leaked SCALAR(0x10d3d48) from -e line 1.

Why is this, do I need to worry about it ?

Update: Also tried Devel::LeakTrace::Fast, it's not complaining about the same code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

画离情绘悲伤 2024-12-14 02:48:32

假设你有泄漏。然后这个:

perl -e'/$?/ for 1..1E9'

应该让你的进程在内存中增长

 ps -o rss,vsz <PID>

在我的例子中它一直保持稳定。您应该检查它的设置。您的模块检测到的泄漏可能是一些后期破坏。您可以给模块作者写一条注释,以帮助您找出其输出,您可以帮助他们改进它...

顺便说一句,对我来说确认“无泄漏”的另一件事是,

 perl -MTest::LeakTrace::Script -e'/$?/ for 1..1000'

我没有看到多个泄漏的标量,只是一。

Assuming you got a leak. Then this:

perl -e'/$?/ for 1..1E9'

should make your process grow in memory

 ps -o rss,vsz <PID>

In my case it stays stable all the way. You should check it for your setup. It could be that leak your module detects is some late destruction. You could write a note to the module authors to help you figure out its output, you can help them to improve it...

BTW another thing confirming "no leak" for me is that on

 perl -MTest::LeakTrace::Script -e'/$?/ for 1..1000'

I don't see multiple leaked scalars, just one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文