字符串的内存优化(游览器内置)

代码1 :
    var array = [];        
        for (var i = 0 ; i < 100000; i++) {        
            array.push({ name: "keatkeata" });
        }
代码2 :
 var array = [];        
        for (var i = 0 ; i < 100000; i++) {        
            var obj = new Object();
            var str = new String("keatkeata");
            obj.name = str;
            array.push(obj);
            obj = null;
        }

代码1和代码2出来的结果是一样的。
但是代码1用的内存是 6.xM 而代码2用了 10M
为什么呢?
其实这和C#原理差不多。
str 也是对象也可以用指针表示
所以呢 代码1其实是new String("keatkeat") 了一次而已,之后的都引用同一个对象
而代码2这是 new String 了很多次,所以内存就消耗很多了!
JSON.parse 就是用了第2种方法,所以你会发现本来没消耗那么多的,结果JSON.parse 后变多了! 
当然如果你的字符串都是不同的,游览器也就没法优化了,要注意了哦!

你可能感兴趣的:(字符串)