xixizhangfe
Results
2
comments of
xixizhangfe
1. test函数入栈 3. 栈内存中创建a,对应的值为1 4. 堆内存中开辟一块内存放b指向的那个对象,假设内存地址是0x0000;栈内存中创建b,值为0x0000 5. 堆内存中开辟一块内存放c指向的那个对象,假设内存地址是0x1111;栈内存中创建c,值为0x1111 6. test函数执行结束,a=1; b=0x0000; c=0x1111出栈,test函数出栈 7. 此时c指向的那块内存不再被用到,则被当做垃圾回收。 如果执行方式不是`test()`, 而是 `var d = test()` ,c也一样会被回收。
> 利用process.memoryUsage通过实验发现即使将test()的执行结果赋值给变量d,分配给c的内存还是会被回收,不明白为什么? @xixizhangfe 当赋值给d这一行代码也执行过后,整个程序就结束了,内存自然要被回收。不回收的话不就造成内存泄露了么?