javascript - 正在分配的内存

标签 javascript memory memory-management

通过使用 Chrome 开发工具,我发现正在分配数组和对象。我检查了我的代码以寻找明显的 []{}new。但是没有。我检查了创建新 []{}new 的函数,并查看了这些函数的使用位置,我已经学会了不使用它们。那么,还可以如何分配内存?

这对我来说是个问题,因为每次 GC 启动时,它都会阻塞主循环并且动画变得不一致。

最佳答案

过度担心内存分配是徒劳的。将为所有内容分配内存,变量,数组,对象等。如果不使用变量或对象,你可以用 javascript 做很多事情,但同样,内存分配并不是 javascript 的真正领域 脚本。无论如何,任何和所有 javascript 都会使用一定程度的内存。事实上,我想说的是,如果您“学会了避免使用”对象和数组,那么您就被误导了或者正在学习错误的类(class)。

避免循环引用、避免每个作用域 过多的内存消耗以及通常避免使用紧密循环和其他不良做法锁定浏览器线程更为重要。例如,在 for 中循环,避免重新计算 for 中的限制声明:for (var x = 1; x < myString.length; x++)应该是 var max = myString.length; for(var x = 1; x < max; x++) .即使是这样的优化(-大多数情况下的优化)对 javascript 开发人员来说也不是关键,因为浏览器正在处理整体内存分配/消耗以及垃圾收集超出范围的引用。

有关避免泄漏的实际操作的更多信息,请查看这篇文章:http://www.javascriptkit.com/javatutors/closuresleak/index.shtml (或类似的其他文章)。否则,只要您没有泄漏 内存,任何脚本都会分配/使用一定程度的内存;这是不可避免的。考虑到现代 PC 有 千兆字节 的可用内存,您的脚本微不足道的 千字节 甚至 兆字节 内存使用并不重要 - 就是这样内存是用来使用它的。

关于javascript - 正在分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349344/

相关文章:

javascript - 如何将 javascript 添加到 ASP.NET 超链接控件

javascript - 有没有办法使用 javascript 检测操作系统语言?

javascript - 计算总值并使用该总值获得每个值的百分比值

Python脚本在不同的行停止并且不抛出异常

c - 为什么 realloc 会弄乱值?

objective-c - Objective C 内存管理问题

c++ - 在删除指向动态分配对象的指针 vector 中的元素之前,我需要做什么?

JavaScript 一次性在多个元素上注册事件类型

c++ - std::array 的 std::array 是否具有连续内存?

objective-c - 内存管理 : NSString's stringWithCString:encoding: