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

标签 javascript memory object sizeof

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

取如下函数:

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

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

现在我实例化 student:

var stud = new Student();

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

stud.firstName = "new Firstname";

alert(stud.firstName);

stud.marks.maxMarks = 200;

等等

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

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

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

最佳答案

我已经重构了我的 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/1248302/

相关文章:

javascript - snap/raphael/svg - 获取一点的 Angular (不是长度)?

javascript - 嵌套和多个<marquee>的烦恼

memory - 两个进程可以共享相同的 GPU 内存吗? (CUDA)

python - 如何完全删除 turtle

python - 类型错误 : Format Requires Mapping

java - 有没有办法使用传递的类对象的方法?

javascript - 尝试在javascript中模拟类,但无法访问内部变量

javascript - node.js 中的 UDP 套接字

c - C 中的内存池实现

javascript - 递归javascript算法中的return语句,如何一直返回堆栈?