javascript - 避免 JavaScript 属性名称占用每个对象的内存

标签 javascript memory-management prototype

如果我有一个 javascript 对象并定义(例如)object.myproperty = uniqueObjID,那么我假设单词“myproperty”作为条目存储到创建的每个此类对象的哈希表中。换句话说,如果我创建 1000 万个这样的对象,我就必须为单词“myproperty”分配存储 1000 万次,因为编译器不知道对象一百万加一是否会有不同的存储空间。而是命名属性。

通过告诉 js 编译器该类型的所有对象都将具有“myproperty”值来节省内存的最佳方法是什么?做类似的事情就足够了

object.prototype.init(ID){ this.myproperty = ID}

最佳答案

if I create 10 million of these objects, I'd have to allocate storage for the word "myproperty" 10 million times, since the compiler doesn't know whether object one-million-and-one will have a differently named property instead.

是什么让您认为编译器无法区分具有 myproperty 属性的数百万个对象和具有不同名称属性的对象?事实上,这就是 JS 编译器所做的事情。

举个例子,看看 V8 引擎的 hidden classes (尽管他们做的不仅仅是一个简单的表)。

关于javascript - 避免 JavaScript 属性名称占用每个对象的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24097173/

相关文章:

perl - 为什么 Perl 5 的函数原型(prototype)不好?

javascript - 向 Safari 中 undefined object 原型(prototype)新添加的函数/属性

javascript - 推荐 上一个按钮 jquery

JavaScript 对象显示为字符串而不是项目

javascript - jQuery - 检查所选行是否是表格中最后可见的行

c - 如何有选择地将内存放入交换区? (Linux)

objective-c - iOS内存管理问题

java - 如何执行 C-Heap 分析

javascript - 原型(prototype)和构造函数对象属性

JavaScript 内存 : Heap, native ,WebGL/GPU