确定 JavaScript 对象的内存占用
在 JavaScript 中,了解对象的内存消耗对于优化性能和避免内存泄漏至关重要。本文解决了获取 JavaScript 对象大小的查询,深入研究了估计此类对象所占用的大致内存的解决方案。
确定对象大小
In JavaScript 中没有专门设计的内置函数来确定对象的大小。然而,一种常见的技术涉及迭代对象的属性并计算每个基元值和对象引用的大小。此估计考虑了数据类型的大小,例如布尔值(4 字节)、字符串(长度 * 2 字节)和数字(8 字节)。
实现对象大小估计器
要估计给定对象的大小,可以使用递归函数:
function roughSizeOfObject(object) { const objectList = []; const stack = [object]; let bytes = 0; while (stack.length) { const value = stack.pop(); switch (typeof value) { case 'boolean': bytes = 4; break; case 'string': bytes = value.length * 2; break; case 'number': bytes = 8; break; case 'object': if (!objectList.includes(value)) { objectList.push(value); for (const prop in value) { if (value.hasOwnProperty(prop)) { stack.push(value[prop]); } } } break; } } return bytes; }
示例
使用提供的示例:
function Marks() { this.maxMarks = 100; } function Student() { this.firstName = "firstName"; this.lastName = "lastName"; this.marks = new Marks(); } const stud = new Student(); const sizeInBytes = roughSizeOfObject(stud); console.log(`Object size: ${sizeInBytes} bytes`);
在这种情况下,roughSizeOfObject函数估计stud对象的大致内存消耗,包括其属性和嵌套对象。
限制
值得注意的是,这种技术提供了一个近似值,可能无法解释与以下相关的所有内存分配物体。此外,与对象引用和闭包相关的开销可能会在准确确定大小时带来额外的复杂性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3