中易网

perl 如何释放内存

答案:3  悬赏:10  
解决时间 2021-02-10 22:52
perl 如何释放内存
最佳答案
perl有垃圾回收机制,不过采用的是一种简单的算法--引用计数,当某变量的引用数为0时会自动释放。


至于手动释放内存,严格来讲,perl里并不存在这样的function. 不过可以“近似地”做到。
undef %hash;
undef @array;或者:
%hash = ();
@array = ();perl的undef()函数有两个功能: 清除变量的内容,释放变量所占的buffers, 此时你可以近似地认为已经释放了内存。


但是注意,实际上并没有真正地释放内存。如果你了解perl的变量在内存里的存放结构,你就会发现,undef后,原变量所在的内存还是被占用的,任然保持着被分配时的状态。但是这块内存的状态被的标记被“reusable”, 当所有内存皆被用完,超出阈值时,这块"被标记"的且它的"引用数为0"的内存才会被释放。
全部回答
1楼回答的比较全面了. 事实上, 你不需要问这个问题, 因为一般情况都不用考虑这个问题. 如果内存真的影响了你的工作, 那说明你的数据结构有问题. 算法上的节约内存才是最重要的. perl一旦申请了一块内存, 一般很难放回去, 直到程序运行结束.
perl有垃圾回收机制,不过采用的是一种简单的算法——引用计数,当某变量的引用数为0时会自动释放。   至于手动释放内存,严格来讲,perl里并不存在这样的function. 不过可以“近似地”做到。   1   2   undef %hash;   undef @array;   或者:   1   2   %hash = ();   @array = ();   perl的undef()函数有两个功能: 清除变量的内容,释放变量所占的buffers, 此时你可以近似地认为已经释放了内存。   但是注意,实际上并没有真正地释放内存。如果你了解perl的变量在内存里的存放结构,你就会发现,undef后,原变量所在的内存还是被占用的,任然保持着被分配时的状态。但是这块内存的状态被的标记被“reusable”, 当所有内存皆被用完,超出阈值时,这块“被标记”的且它的“引用数为0”的内存才会被释放。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
金果园游客中心地址在哪,我要去那里办事
高中毕业《有毕业证》几年工作几年以后,要想
企业倒班员工工作连续时间24小时休息48小时符
侠盗飞车圣安地列斯进去后游戏自己加速了 ,
词人为什么在《破阵子》中写“醉里”和“梦回
合肥学院南艳湖校区-学术报告厅地址在什么地
山东协和学院怎么样 收费多么
担保公司和担保咨询公司有什么区别?
顺德龙江的公交车236到佛山火车站吗?
心情毛躁的说说
天津银行信用卡是否可以分期还款?
准沙布格地址在哪,我要去那里办事
中油石化(343省道童星幼儿园旁)地址好找么,
玛诗菲尔服饰工厂店地址在什么地方,想过去办
什么是无闪拍摄
推荐资讯
九百五十加加五百六除以十四乘二十八等于多少
麻烦大家给我出出主意,怎样能让眼睛变大,然
为什么今天百度帖子进不去?贴吧都能进,就是
美味小吃馆在什么地方啊,我要过去处理事情
农村信用社金承分社地址在什么地方,想过去办
乐狐易购成人用品第288标准店怎么去啊,有知
天香人和饭店怎么去啊,有知道地址的么
日本cosme碎发神器怎么样
伊春市公安局翠峦区分局在哪里啊,我有事要去
一个人单独旅游的意义!
利恒机械加工厂我想知道这个在什么地方
is considered as同义词
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?