javascript - 如何获取 JavaScript 对象的大小?

标签 javascript memory object sizeof

我想知道 JavaScript 对象占用的大小。

采用以下函数:

function Marks(){
  this.maxMarks = 100;
}

function Student(){
  this.firstName = "firstName";
  this.lastName = "lastName";
  this.marks = new Marks();
}

现在我实例化学生:

var stud = new Student();

这样我就可以做类似的事情

stud.firstName = "new Firstname";

alert(stud.firstName);

stud.marks.maxMarks = 200;

等等

现在,stud 对象将占用内存中的一些大小。它有一些数据和更多对象。

如何找出stud对象占用了多少内存?类似于 JavaScript 中的 sizeof() 吗?如果我能在像 sizeof(stud) 这样的单个函数调用中找到它,那就太棒了。

我已经在互联网上搜索了几个月 - 找不到它(在几个论坛中询问 - 没有回复)。

最佳答案

我已经在我的 original answer 中重构了代码。我已经删除了递归并删除了假定存在的开销。

function roughSizeOfObject( object ) {

    var objectList = [];
    var stack = [ object ];
    var bytes = 0;

    while ( stack.length ) {
        var value = stack.pop();

        if ( typeof value === 'boolean' ) {
            bytes += 4;
        }
        else if ( typeof value === 'string' ) {
            bytes += value.length * 2;
        }
        else if ( typeof value === 'number' ) {
            bytes += 8;
        }
        else if
        (
            typeof value === 'object'
            && objectList.indexOf( value ) === -1
        )
        {
            objectList.push( value );

            for( var i in value ) {
                stack.push( value[ i ] );
            }
        }
    }
    return bytes;
}

关于javascript - 如何获取 JavaScript 对象的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183134/

相关文章:

javascript - material-ui的TextField、DropDownMenu组件如何获取数据?

.net - 按内存顺序物理排列的矩形阵列

.net - ANTS Memory Profiler - 我应该查看哪个内存?

python - Numpy 数组维度的选择

java - Selenium 中的页面对象模型最佳实践

php、ajax、html 选择元素

javascript - $location的概念

javascript - Node.js 代码排序——是否有可能在监听器就位之前发出数据

c++ - 内存状态c++

c++ - 多态是实现这一目标的最佳方法吗? (关于派生类中的函数调用)