Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Garbage collection lua中的弱表-实际用途是什么?_Garbage Collection_Lua_Weak References - Fatal编程技术网

Garbage collection lua中的弱表-实际用途是什么?

Garbage collection lua中的弱表-实际用途是什么?,garbage-collection,lua,weak-references,Garbage Collection,Lua,Weak References,我知道什么是弱表。 但我想知道弱表在哪里可以实际使用 医生说 弱表通常用于希望注释的情况 不改变它们的价值观 我不明白。这意味着什么?通常,当对象超出范围时,存储对对象的引用将防止该对象被回收。弱引用不会阻止垃圾收集。通常,存储对对象的引用将防止在对象超出范围时回收该对象。弱引用不会阻止垃圾收集。作为评论的答案发布 因为Lua不知道你认为什么垃圾,它不会收集任何东西,它不一定是垃圾。在某些情况下(其中一种可能是调试),您希望为变量指定一个值,而不会导致Lua将其视为“非垃圾”。根据我的理解,弱表

我知道什么是弱表。
但我想知道弱表在哪里可以实际使用

医生说

弱表通常用于希望注释的情况 不改变它们的价值观


我不明白。这意味着什么?

通常,当对象超出范围时,存储对对象的引用将防止该对象被回收。弱引用不会阻止垃圾收集。

通常,存储对对象的引用将防止在对象超出范围时回收该对象。弱引用不会阻止垃圾收集。

作为评论的答案发布


因为Lua不知道你认为什么垃圾,它不会收集任何东西,它不一定是垃圾。在某些情况下(其中一种可能是调试),您希望为变量指定一个值,而不会导致Lua将其视为“非垃圾”。根据我的理解,弱表允许您执行通常对变量/对象/等执行的操作,但如果它们是弱引用的(或在弱表中),它们仍将被Lua视为垃圾,并在调用垃圾收集函数时被收集


示例:考虑是否要使用关联数组,在两个单独的私有表中使用键/值对。如果您只想将密钥表用于一个特定用途,那么一旦您使用完它,它将在Lua中被锁定。但是,如果使用弱表,则可以在使用完它后立即将其作为垃圾收集,从而释放它正在使用的资源

为了解释一个关于注释的神秘句子,当你“改变”一个变量时,你将它锁定为存在,Lua不再认为它是垃圾。“注释”变量意味着给它一个名称、数字或其他值。因此,这意味着您可以在不锁定变量存在的情况下为变量指定名称/值(这样Lua就可以对其进行垃圾收集)

翻译:


弱表通常用于您希望为某个值命名而不锁定该值的情况,这会占用内存。

作为注释的答案发布


因为Lua不知道你认为什么垃圾,它不会收集任何东西,它不一定是垃圾。在某些情况下(其中一种可能是调试),您希望为变量指定一个值,而不会导致Lua将其视为“非垃圾”。根据我的理解,弱表允许您执行通常对变量/对象/等执行的操作,但如果它们是弱引用的(或在弱表中),它们仍将被Lua视为垃圾,并在调用垃圾收集函数时被收集


示例:考虑是否要使用关联数组,在两个单独的私有表中使用键/值对。如果您只想将密钥表用于一个特定用途,那么一旦您使用完它,它将在Lua中被锁定。但是,如果使用弱表,则可以在使用完它后立即将其作为垃圾收集,从而释放它正在使用的资源

为了解释一个关于注释的神秘句子,当你“改变”一个变量时,你将它锁定为存在,Lua不再认为它是垃圾。“注释”变量意味着给它一个名称、数字或其他值。因此,这意味着您可以在不锁定变量存在的情况下为变量指定名称/值(这样Lua就可以对其进行垃圾收集)

翻译:


<代码>弱表通常用于希望在不锁定值的情况下给一个值加上一个值,这占用了内存。 < /P>因为Lua不知道你认为什么是垃圾,它不会收集任何不一定是垃圾的东西。在某些情况下(其中一种可能是调试),您希望为变量指定一个值,而不会导致Lua将其视为“非垃圾”。据我所知,弱表允许您执行通常对变量/对象/等执行的操作,但如果它们是弱引用的(或在弱表中),则它们仍将被Lua视为垃圾,并在调用垃圾收集函数时被收集。@rownage感谢您提供的信息

在某些情况下
你说的。您可以指定这种情况吗?请考虑是否要使用关联数组,在两个单独的私有表中使用键/值对。如果您只想将密钥表用于一个特定用途,那么一旦您使用完它,它将在Lua中被锁定。然而,如果您使用的是一个弱表,那么在您使用完它之后,您就可以将其作为垃圾收集,从而释放出它正在使用的资源。啊,现在释放出资源,然后!有道理。这意味着什么?
弱表通常用于您希望在不更改值的情况下注释值的情况。
?BTW.,如果你能发布这个答案,我会接受它:一个很好的例子。既然Lua不知道你认为什么垃圾,它就不会收集任何不一定是垃圾的东西。在某些情况下(其中一种可能是调试),您希望为变量指定一个值,而不会导致Lua将其视为“非垃圾”。据我所知,弱表允许您执行通常对变量/对象/等执行的操作,但如果它们是弱引用的(或在弱表中),则它们仍将被Lua视为垃圾,并在调用垃圾收集函数时被收集。@rownage感谢您提供的信息
在某些情况下
你说的。您可以指定这种情况吗?请考虑是否要使用关联数组,在两个单独的私有表中使用键/值对。如果您只想将密钥表用于一个特定用途,那么一旦您使用完它,它将在Lua中被锁定。如果你要使用