perl 如何释放内存

 我来答
suanniba2
推荐于2018-04-12 · TA获得超过710个赞
知道答主
回答量:39
采纳率:100%
帮助的人:32.4万
展开全部

perl有垃圾回收机制,不过采用的是一种简单的算法--引用计数,当某变量的引用数为0时会自动释放。


至于手动释放内存,严格来讲,perl里并不存在这样的function. 不过可以“近似地”做到。

undef %hash;
undef @array;

或者:

%hash = ();
@array = ();

perl的undef()函数有两个功能: 清除变量的内容,释放变量所占的buffers, 此时你可以近似地认为已经释放了内存。


但是注意,实际上并没有真正地释放内存。如果你了解perl的变量在内存里的存放结构,你就会发现,undef后,原变量所在的内存还是被占用的,任然保持着被分配时的状态。但是这块内存的状态被的标记被“reusable”, 当所有内存皆被用完,超出阈值时,这块"被标记"的且它的"引用数为0"的内存才会被释放。

百度网友12a338d
2014-03-01
知道答主
回答量:3
采纳率:0%
帮助的人:3934
展开全部
1楼回答的比较全面了. 事实上, 你不需要问这个问题, 因为一般情况都不用考虑这个问题.
如果内存真的影响了你的工作, 那说明你的数据结构有问题. 算法上的节约内存才是最重要的. perl一旦申请了一块内存, 一般很难放回去, 直到程序运行结束.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式