我从一个网站上读到了词汇变量,因为他们解释说,使用"my"关键字声明的变量是一个词法变量.它使用my关键字直到当前块结尾的地方.这是词法变量的范围.
我的疑问是,如果范围完成,词汇变量是否从记忆中解放出来?如果完成范围意味着词汇变量没有从内存中释放出来,那么它何时会从内存中释放出来?谁能清楚地向我解释一下?
Perl词法变量喜欢保留它们的内存,以便下次词法在范围内时可以重用它.通常,对于数字,引用,小字符串或散列或具有少量元素的数组,这并不重要.
对于包含大字符串或数组或具有大量元素的哈希的词法,您可以明确地使用它undef yourvarname来释放它们的内存.(虽然这只是释放了Perl进程用于其他事情的内存,但不会将其释放到其他进程.)
当词法变量超出范围时将被“释放”。如果它指向一个具有循环引用的数据结构,那么即使没有其他人指向它,该结构也不会被“释放”。