javascript - JavaScript 中释放内存的正确方法

标签 javascript memory

作为一名 C 开发人员,我感到迫切需要尽可能准确地释放内存。但在阅读了一些有关 JavaScript 内存管理的文章后,我仍然对这个主题有一些疑问。据我了解,有一个垃圾收集器,当一个对象不再被引用并且GC可以找到时间时,它会自动释放内存。因此,当变量超出范围时,保存在局部变量中的对象很可能会被释放。

假设我有一些自定义元素(选项卡控件、数据表、输入等)。这些自定义元素的类具有成员变量,其中存储了特定元素的多个数据。事件监听器还可以附加到自定义元素组成的元素。

假设我有以下 html 标记:

<my-tabbar>
    <my-tab id="myTab">
        <my-input></input>
        <my-dataTable></my-dataTable>
    </my-tab>
</my-tabbar>

现在我想删除<my-tab> 。仅仅这样做就足够了

var element = document.getElementById ("myTab");
element.parentNode.removeChild (element);
element = null;

或者我是否必须取消引用子元素的每个对象并删除它们的事件监听器?

最佳答案

将对象设置为 null 会使其成为空对象。一旦对象超出范围,GC(当它运行时)就会将其清除。将本地对象设置为 null 不会有任何好处。

示例:

function whatever()
{
    var something = null;
    console.log( typeof( something ) );
}

whatever();

输出:

"object"

要删除子节点,请参见: Does removeChild really delete the element?

来源:

https://www.w3schools.com/js/js_datatypes.asp

关于javascript - JavaScript 中释放内存的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51827294/

相关文章:

javascript - 如何在 Node.js 中获取 URL 参数的值?

c++ - 如何分析内存使用情况?

c++ - C++ 字符串返回和 c_str() 转换的令人困惑的行为

c - 需要帮助理解我的示例的 malloc(0)

javascript - 选择每 n 个相同类型的元素,但不在同一父元素中

javascript - 检测何时使用软键盘并运行 JS 函数?

Java app通过JNI调用C++ DLL;如何最好地分配内存?

c++ - Operator new 在有大量物理内存可用时抛出异常

javascript - 从字符串中删除扩展名之前的 4 个字母

javascript - "select"元素中选项下拉列表的函数