我有一个mod_perl-enable Apache运行本机(处理程序,而不是Apache :: Registry或类似的)mod_perl代码。众所周知,模块可以在运行时进行编译和加载。出于测试目的,我有一个虚拟模块:
package MyPackage;
our $data = '0123456789' x 1000000; # 10 millions characters
1;
在运行时我加载它并且我的 httpd 子进程在多个请求之后逐个累加10兆字节。这可以。这种方式我可以使用ocasionally一些内存消耗代码,但虽然它很少发生,我希望能够卸载使用过的模块完成它的工作。
如果你要提到使用词法my
变量,我知道当范围结束时会被破坏。因此,在这种情况下,our
或包变量是一个重要因素。
是否可以在运行时获取此信息?如果是的话,怎么办呢?
答案 0 :(得分:2)
核心Symbol模块包含一个函数delete_package
,它接受包名并删除其中的所有变量。
所以在你的情况下:
use Symbol 'delete_package';
delete_package 'MyPackage';