草庐IT

memory-management

全部标签

javascript - 为什么这是 JavaScript 中的内存泄漏?

我在IBM的网站上阅读这篇关于JavaScript内存泄漏的文章(http://www.ibm.com/developerworks/web/library/wa-memleak/)时,我遇到了一个看起来不太像泄漏的内存泄漏:document.write("Programtoillustratememoryleakviaclosure");window.onload=functionouterFunction(){varobj=document.getElementById("element");obj.onclick=functioninnerFunction(){alert("Hi

javascript - 在javascript中从内存中删除对象

我正在开发一个包含大量Javascript的AJAX应用程序。所有页面均通过AJAX加载。在某个页面上,我有一个用Javascript构建的网格。现在,当我离开该页面时,我想销毁该网格。我调用jQuery.remove()但这只会从DOM中删除对象。我的问题是如何从内存中删除这个网格对象?因为当我离开页面时它仍然存在。非常感谢! 最佳答案 如果您删除对网格的所有引用(即,将null分配给变量),垃圾收集器将从内存中删除该对象。 关于javascript-在javascript中从内存中删

javascript - Node : Why pm2 list shows memory keeps on increasing?

我将HAPI.JS框架与NodeJS结合使用并创建了一个代理。认为代理意味着我只是在redis中维护session。除此之外,我没有在代码中做任何事情。可能唯一的问题是我每3分钟使用setInterval记录我的process.memoryUsage()。我的问题:为什么我的内存力一直在增加?它会下降吗?发生这种情况是否是因为setInterval不断记录进程使用情况?这是由于每个请求和响应的控制台日志记录导致的吗?我的Redis数据库一直保持打开状态,直到我的服务器崩溃,这是造成这种情况的原因吗?我是否需要使用流程管理器(如newrelic或strongloop)来识别它?那么这个内

javascript - angular2-in-memory-web-api 404 错误

我正在尝试按照本指南以Angular2构建5分钟的应用程序:https://angular.io/docs/ts/latest/tutorial/toh-pt6.html.在http部分,我添加了一个假服务器,但我收到404错误,因为angular2-in-memory-web-api.http://localhost:4200/vendor/angular2-in-memory-web-api/in-memory-backend.service.jsFailedtoloadresource:theserverrespondedwithastatusof404(NotFound)我试图

关于未引用变量的 JavaScript 闭包

我知道有关闭包的精彩帖子here和here,但似乎都没有解决我想到的特定情况。这个问题最好用代码来证明:functionfoo(){varx={};vary="whatever";returnfunctionbar(){alert(y);};}varz=foo();在bar中引用y会调用一个闭包,只要我将z保持在垃圾收集器周围就不会清理y。问题是——x会发生什么?即使它没有被引用,它是否也被那个闭包持有?垃圾收集器会发现没有引用x并清理它吗?或者只要我坚持使用z,x就会与y一起持续存在吗?(一个理想的答案是引用ECMA规范。) 最佳答案

javascript - 如何避免在 Firefox 中造成内存泄漏?

似乎有很多关于IE中的内存泄漏以及Web开发人员如何避免它们的信息,但我找不到太多关于避免FF中的泄漏的信息。我发现了很多关于最终用户如何调整他们的偏好的随机提示,或扩展开发人员的提示,但很少有关于我作为Web开发人员可以做些什么来确保我的页面不会泄漏的信息。我错过了什么吗?把它归咎于用户并说“你有太多扩展”似乎很懒惰。或者主要模式是否与IE中的相同——循环引用等等?此外,如果有人知道任何可以解决FF泄漏问题的工具,那就太好了。我找到了这个:https://addons.mozilla.org/en-US/firefox/addon/2490/但它显然只是用于chrome和扩展开发。

javascript - 释放 Javascript 中未附加的 DOM 节点使用的内存

作为我的应用程序的一部分,我将一组不会同时显示的小型Dom节点放在一起。我将它们存储在一个内部数组中。用户可以调用他们的显示,在这种情况下,我将它们重新设置为用于显示它们的div。这一切都很好。但是当需要用新的替换它们时,我想销毁旧的(有效地释放它们)。否则,随着时间的推移,内存使用量可能呈指数级增长。如何强制浏览器js引擎执行此操作?只是将我的Dom节点数组中的每个项目都设置为null就足够了吗?还有什么我必须做的吗?或者也许我根本不必担心这个? 最佳答案 如果您将每个项目设置为null,它们将被自动垃圾回收。

javascript - 在紧凑的 JavaScript 循环中使用 var 会增加与内存相关的开销吗?

例如,会这样:while(true){varrandom=Math.random();}...在大多数实现中效率低于以下?varrandom;while(true){random=Math.random();}感谢您的输入。编辑:如果不是很明显,我主要担心此示例中会发生大量重复(取消)分配。 最佳答案 JavaScript没有block作用域。在第一个例子中,vartext声明是hoisted在whileblock之外。在这两种情况下,变量只声明一次。在这两种情况下,每次while循环迭代都会为变量分配一个值。var函数-作用域提升

JavaScript "cache"与 "memory"

如果您在Stackoverflow上搜索如何在JS中缓存变量,您会找到指向例如cookie或本地存储的答案。另一方面,“缓存”一词经常这样使用:“缓存数组的长度,这样我们就不必每次都计算它”。当然,我们不会在cookie或本地存储中缓存长度。我的问题是:“缓存”长度的位置在哪里?它在内存中吗?如果是这样,我们为什么要使用“缓存”这个词? 最佳答案 这是一个非常多的问题,看来您在这里混淆了很多概念。希望这有助于:对于您的问题““缓存”长度的位置在哪里?它在内存中吗?”给定某个值的任何变量都存储在内存中的特定位置。在JavaScript

javascript - webdriver-manager 更新错误 : EACCES, 权限被拒绝

我曾经成功地运行Protractor测试(在Mac上)并且我尝试升级版本,所以我运行了$npminstall-gprotractor它看起来很有效——在运行时$protractor--version我明白了Version1.8.0但是现在,在运行时$webdriver-managerstart我明白了fs.js:642returnbinding.mkdir(pathModule._makeLong(path),^Error:EACCES,permissiondenied'/usr/local/lib/node_modules/protractor/selenium'atObject.f