首页 > 代码库 > java和javascript真的有关系=。=
java和javascript真的有关系=。=
相同点:
1. 内存管理,两者都采用GC来对内存进行回收。因此Java与javascript的内存泄露情况十分相似。
2. 代码编译为机器码后由中间件执行:Java使用前会编译为字节码后由JVM执行,V8引擎采用JIT将js编译为机器码后由引擎执行。
3. 内存申请,对象(Object)与数组(Array)引用申请自栈(stack),其本身空间申请自堆(heap)。
4. hash处理,对数组与对象来说,数字类型键值的hashCode为其本身,字符串类型键需要计算hashCode来找到对应的值,因此属性名字的长度决定了其类型在hash类容器中的性能,Java中也有这样的问题。
arr = [], obj = {}, num = 1000000;function arrTest() { for(var i=0;i<num;i++) { arr[100] = i; }}function objTest() { for(var i=0;i<num;i++) { obj[100] = i; }}function objTest2() { for(var i=0;i<num;i++) { obj["def"] = i; }}function objTest3() { for(var i=0;i<num;i++) { obj["apqerasmfkvcxcjvirjqwesdaf/j;klsADf"] = i; }}function objTest4() { for(var i=0;i<num;i++) { obj["1"] = i; }}function objTest5() { for(var i=0;i<num;i++) { obj[1000000000000000000] = i; }}console.time("arr"); arrTest(); console.timeEnd("arr");console.time("obj"); objTest(); console.timeEnd("obj");console.time("obj2"); objTest2(); console.timeEnd("obj2");console.time("obj3"); objTest3(); console.timeEnd("obj3");console.time("obj4"); objTest4(); console.timeEnd(