繁体   English   中英

如何检查 javascript 变量的 memory 分配

[英]How to check memory allocation for a javascript variable

var test = [{a:1,b:2}];

test.value = test;

对于上面的代码,我想看看浏览器占用了多少memory。 性能是否有任何副作用(因为递归使用测试变量)。 我从gist创建了一个示例 function 但超出了最大堆栈调用。 我只是想了解使用迭代方法的问题。

我知道我们可以修改上面的代码以使其非递归,如下所示:

var test = [{a:1,b:2}];

test.value = [...test];

JS 总是将对象的赋值作为 memory 引用,有很多方法可以只复制对象的值。

这是我最喜欢的

test.value = Object.assign({}, test);

更通用

object_copy = Object.assign({}, object_origin)

该代码所做的是将原始对象的值合并到一个新对象中,我们将其初始化为空 object {}

尝试 chrome memory 配置文件快照

我刚刚写了一个小代码来检查您操作过程中 memory 的分配量,并使用 chrome devtool 记录了 memory 的分配量。

这是我写的代码:

 <HTML> <body> <button onclick="startTest()">Start Test</button> </body> <script> function startTest() { var test = [{a:1,b:2}]; test.value = test; } </script> </html>

当按钮单击时 startTest() function 运行。

于是我开始记录 memory 分配并按下Start Test按钮,结果如下: 结果

图片中的蓝色细线显示为变量test分配的 memory 很快被垃圾收集器释放。 这意味着不存在递归或任何 memory 分配问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM