首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从perl中回收内存?

如何从perl中回收内存?
EN

Stack Overflow用户
提问于 2009-11-03 14:44:32
回答 5查看 2.6K关注 0票数 2

哪种方法可以从Perl脚本中回收内存和/或防止perl产生内存管理池?

EN

回答 5

Stack Overflow用户

发布于 2009-11-04 01:41:00

回答了一个类似的问题:在脚本结束/终止之前执行In general, you cannot expect perl to release memory to the OS。在终止时,分配的所有内存都会返回给操作系统,但这是操作系统的一个特性,并不是特定于Perl的。

因此,如果您有一个长时间运行的脚本,那么您的选择是有限的:

  • 您可以将内存密集型部分委派给子进程。这样,当每个部分完成时,内存将被释放。代价是IPC communications.
  • You使用您自己的内存管理结构,通常基于Tie。如果你的结构不是很简单(即使是一个标准的基于NDBM的哈希表也很简单,但是功能相当强大),那么你要付出的代价就是处理装入/存储到backstore的过程。
  • 你使用你的内存作为宝贵的资源,optimize its usage (通过使用更小的结构,实现内存重用等)。
票数 9
EN

Stack Overflow用户

发布于 2009-11-03 16:22:47

最有效的方法是拥有大量的虚拟内存,这样perl已经分配但不经常使用的内存就会被调出。

除此之外,要阻止perl仅仅通过time...not分配更多的内存是非常困难的,因为它是泄漏的,但是因为perl确实喜欢保留已分配的内容,以防它们再次被使用。具有相当一致字符串大小的小代码库将在一段时间后达到顶端,但这是一个例外情况。

在apache下,历史悠久的技术是在进程达到一定大小或请求数量达到一定数量后将其杀死。这在线程化的MPM中不能很好的工作。

票数 8
EN

Stack Overflow用户

发布于 2009-11-03 20:21:57

通常未定义,深度优先。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1665636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档