perl 如何释放内存

如题所述

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


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

undef %hash;
undef @array;

或者:

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

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


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

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-01
1楼回答的比较全面了. 事实上, 你不需要问这个问题, 因为一般情况都不用考虑这个问题.
如果内存真的影响了你的工作, 那说明你的数据结构有问题. 算法上的节约内存才是最重要的. perl一旦申请了一块内存, 一般很难放回去, 直到程序运行结束.

perl 如何释放内存
perl有垃圾回收机制,不过采用的是一种简单的算法--引用计数,当某变量的引用数为0时会自动释放。至于手动释放内存,严格来讲,perl里并不存在这样的function. 不过可以“近似地”做到。undef %hash;undef @array;或者:hash = ();@array = ();perl的undef()函数有两个功能: 清除变量的内容,释...

CMD运行perl提示内存不足
1、点击我的电脑、右键点击属性。2、点击左边的高级系统设置。3、点击高级、然后性能设置。4、再点击高级。5、点击程序再点击设置。6、设置虚拟内存的时候,可以看到推荐内容大小,建议填写电脑推荐虚拟内存大小。7、设置好内存之后,必须点击设置,再点击应用确定(必须按照步骤走,否则不会有用!)。

perl读大文件,显示内存不够,怎么办
如果是硬件内存不够,则考虑修改程序使用方式,例如逐行处理,不要占用这么多内存 如果内存是足够的,是32位perl的限制,改用64位perl 如果文件可以切分,可以考虑将文件切分小一些

高手来,我有个Perl脚本,要解压大文件,内存不足怎么优化?
通过命令行调用别的不会溢出的内存工具呗。不过你测试一遍是不是要花很长时间

unix下如何查出进程占用内存,从大到小的前十位
使用svmon命令,可与 -u、-p、-g 或 -v 标志来更改排序规则。如果不了解就输入 svmon -help 看看多有什么规则。按你的题目来,比如说我获得使用内存前10个进程,命令为:svmon -Pt10 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(\/^-+$\/)}'补充,svmon命令是在...

Intel D865PERL 主板支持ECC内存吗 请高手指教
ECC内存即纠错内存,简单的说,其具有发现错误,纠正错误的功能,一般多应用在高档台式电脑\/服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。应该不支持.ECC内存用于服务器及高档台式电脑.家用的多是DDR内存

我的老古董电脑:主板英特尔D865PERL ,内存512MB,想升级显卡,满足看45...
该主板是agp接口,现在没有这种接口的显卡了

...换个内存条。主板 Intel Corporation D865PERL 十万火急
你用的是865PE的芯片组,只支持DDR一代,可以买根DDR 400,512M的就可以,最好是跟你现在用的内存容量和速度一样大,可以组成双通道。

英特尔D865PERL主板P42.6CPU斯巴达克惊天镭9550至尊版显卡应该配多大的...
相信我 对XP而言 最佳1G内存 加到2G内存后 很难感觉出速度 所以无论什么配置(前提是中高端)1G-2G 最多了 但您所提供的配置 1G足够用了 在大也是浪费 买2根512MB 组成DDR双通道 就可以完全发挥电脑的性能了

1G内存DDR400快还是1.5G内存DDR320快?
都是DDR400的内存,那应该都能运行在400下啊,怎么会有320出来?应该是受CPU外频的限制吧?如果这样的话,单插1G的也就能运行在320左右。至于显卡超频,没风扇是肯定超不了的,而且又是杂牌的显卡,建议不超了。如果一定要超的话,可以去买一块超频三的显卡散热风扇套装,带散热片的那种,直接将你...

相似回答