Javascript 在kinetic.js中删除和销毁有什么区别

Javascript 在kinetic.js中删除和销毁有什么区别,javascript,garbage-collection,html5-canvas,kineticjs,Javascript,Garbage Collection,Html5 Canvas,Kineticjs,我阅读了KineticJS文档中的文档,上面说: destroy()-删除并销毁自己 remove()-从父级移除self,但不要销毁 如果我的理解是正确的,那么remove()函数将从父节点中删除节点,但仍在内存中分配。destroy()完全释放内存,对吗?有人能用外行的语言解释一下,如果我使用“销毁”而不是“删除”,会有什么复杂情况吗 先谢谢你 致以最热烈的问候, 丹迪·玲我相信你是对的,但为了补充你所说的,我认为你会使用: remove()-删除节点并在以后可能使用该节点 destroy(

我阅读了KineticJS文档中的文档,上面说:

destroy()-删除并销毁自己

remove()-从父级移除self,但不要销毁

如果我的理解是正确的,那么remove()函数将从父节点中删除节点,但仍在内存中分配。destroy()完全释放内存,对吗?有人能用外行的语言解释一下,如果我使用“销毁”而不是“删除”,会有什么复杂情况吗

先谢谢你

致以最热烈的问候,
丹迪·玲

我相信你是对的,但为了补充你所说的,我认为你会使用:

remove()-删除节点并在以后可能使用该节点

destroy()-如果知道不再需要该节点,则完全销毁该节点

此外,以下是直接从wiki获取的垃圾收集的一些优点和缺点:

利益

垃圾回收将程序员从手动处理内存释放中解放出来。因此,某些类别的错误被消除或大大减少:

  • 悬空指针错误,当一段内存被释放时,仍然有指向它的指针,并且其中一个指针被取消引用,就会发生这种错误。到那时,内存可能已被重新分配给其他用途,结果不可预测
  • 双重释放错误,当程序试图释放一个已经被释放的内存区域,并且可能已经被再次分配时,会发生这种错误
  • 某些类型的内存泄漏,程序无法释放无法访问的对象占用的内存,这可能导致内存耗尽。(垃圾收集通常不处理可访问的、但程序实际上不会使用的数据的无限制累积。)
  • 持久数据结构的高效实现 垃圾收集解决的一些bug可能会带来安全隐患
缺点

通常,垃圾收集有某些缺点:

  • 垃圾收集在决定释放哪个内存时会消耗计算资源,即使程序员可能已经知道这些信息。不在源代码中手动注释对象生存期的便利性带来的代价是开销,这可能导致性能降低或不均匀。在常规测试中难以预测或检测的情况下,与记忆层次效应的交互作用会使这种开销变得难以忍受
  • 实际收集垃圾的时刻可能是不可预测的,这会导致整个会话中分散的暂停。在实时环境、事务处理或交互式程序中,不可预知的暂停是不可接受的。增量、并发和实时垃圾收集器以不同的权衡方式解决这些问题
  • 非确定性GC与基于RAII的非GCed资源管理不兼容。因此,对非GCed资源的显式手动资源管理(发布/关闭)的需求转变为合成。也就是说:在非确定性GC系统中,如果一个资源或类似资源的对象需要手动资源管理(释放/关闭),并且该对象被用作另一个对象的“一部分”,那么合成的对象也将成为一个类似资源的对象,它本身需要手动资源管理(释放/关闭)

这里还有一个来自SO的参考资料:

你知道垃圾收集吗?