perl如何释放内存?

perl如何释放内存?

执行一个CGI程序,处理内容是从数据库查询7000条数据,返回的结果用xml文件的形式返回给浏览器。

发现程序执行的效率特别特别的差,返回的xml文件大小是8M左右,可是内存竟会耗掉300M左右

看代码分析了一下原因,从数据库取回来的数据先是放到一个hash里,然后用XML::Simple模块的XMLout()方法
将hash转成xml文件(8M大小)放在变量里。

这个过程里,数据库返回的$sth句柄,存放数据的hash,最后生成的xml文件的变量都undef了,可是发现耗掉的内存一点不释放,直到重启apache服务。

所以想问问,perl里该如何释放内存?用undef不行么?
一般来说 undef 就足够了,
但是如果你用了一些特殊的模块,最好还是看看模块文档吧。
有时候可能需要 $obj->destory() 一类的操作,主要是针对循环引用的情况。


QUOTE:
原帖由 flw 于 2007-12-6 19:00 发表
一般来说 undef 就足够了,
但是如果你用了一些特殊的模块,最好还是看看模块文档吧。
有时候可能需要 $obj->destory() 一类的操作,主要是针对循环引用的情况。

嗯,谢谢!我再好好把用过的模块的文档看一遍

另外,用undef释放内存是否有个时间问题?也就是说,在程序执行结束的时候并不能立刻用vmstat看到free的闲置内存增加?我跑完一个网页等了5分钟再用vmstat看free的量还是没有增加

PERL是不 回 在意内存 方面的  东西 的