Articles of 垃圾收集

node.js v8垃圾收集似乎没有触发

我很困惑,因为我的应用程序正在泄漏内存。 这是一个tcp服务器,每分钟处理数十万个数据包。 我已经检查了代码,改进了它并分析了内存。 一切似乎没问题,在低stream量本地testing显示,gc正确释放内存。 但是,如果在stream量大的stream量服务器上,它不会。 所以我尝试使用的expose-gc选项,并添加强制gc到每一个断开连接,现在我发现内存不再泄漏,或者它甚至每一次泄漏? 所以,我的结论是gc没有激活。 我的服务器有3GB的内存,并在几个小时内的应用程序可以吃2.8GB的。 现在强制gc的应用程序不再泄漏。 它维持大约200MB的内存。 所以,我的问题是,为什么gc没有被触发?

node.js native addon – 包装类的析构函数不运行

我正在用C ++编写node.js插件。 我使用node :: ObjectWrap封装了一些类实例,将本地实​​例与一个javascript对象关联起来。 我的问题是,包装的实例的析构函数从不运行。 这里是一个例子: point.cc #include <node.h> #include <v8.h> #include <iostream> using namespace v8; using namespace node; class Point :ObjectWrap { protected: int x; int y; public: Point(int x, int y) :x(x), y(y) { std::cout << "point constructs" << std::endl; } ~Point() { std::cout << "point destructs" << std::endl; } static Handle<Value> […]

如何防止在javascript中的内存泄漏

我陷入内存泄漏在JS问题。 使用Javascript: var index = 0; function leak() { console.log(index); index++; setTimeout(leak, 0); } leak(); 这里是我的testing代码,我使用instruments.app来检测它的内存使用情况,并且内存的上升速度非常快。 我怀疑似乎没有变数占据记忆。 为什么? 任何想法都很感激。

使用虚拟机执行不可信代码时NodeJS内存泄漏

我正在使用NodeJS VM模块安全地运行不受信任的代码。 我注意到一个巨大的内存泄漏,每次执行需要大约10M的内存,并没有释放它。 最终,我的节点进程最终使用了500M以上的内存。 经过一番挖掘,我将问题追溯到不断创build的虚拟机。 为了testing我的理论,我注释了创build虚拟机的代码。 果然,内存使用量急剧下降。 然后,我再次取消注释代码,并将global.gc()调用放在问题区域周围,并使用 – expose-gc标志运行节点。 这大大减less了我的内存使用,并保留了function。 在完成使用之后,有没有更好的清理虚拟机的方法? 我的下一个方法是caching包含给定的不安全代码的虚拟机,如果我再次看到不安全的代码,则重用它(背景:我让用户为文本块编写自己的parsing函数,因此不安全的代码会频繁执行或执行一次,从来没有见过)。 一些参考代码。 async.each(items,function(i,cb){ // Initialize context… var context = vm.createContext(init); // Execute untrusted code var captured = vm.runInContext(parse, context); // This dramatically improves the usage, but isn't // part of the standard API // global.gc(); // Return Result via a callback cb(null,captured); });

debugging节点js垃圾收集/内存问题与铬

我试图find一些内存泄漏的根本问题,我有一个节点的应用程序(V 0.8.6)。 为了帮助解决这个问题,我使用https://github.com/c4milo/node-webkit-agent 。 由于应用程序很大,我在一个testing平台中隔离了这个问题,以限制大型应用程序中的噪声量。 我们运行testing,然后将Chrome代理程序附加到该进程。 该物体似乎应该被清理,因为没有任何保持path缠绕在任何根物体上。 我的理解是如何保留path有缺陷,有什么我失踪? 我已经上传了一个debugging会话的下面的屏幕截图,显示了我认为应该GC'd的对象以及保留path,这些path并不会返回到任何GC根对象。

Node.js的垃圾收集器

我从这个线程学习了node.js的垃圾回收 ,node.js使用分代GC。 我经常使用循环对象引用(这两个我删除/确保最终超出范围),并想知道node.js是否处理好。 所以例如。 如果它使用ref完成。 计数,会有一个问题,所以我想知道在这个节点是多么好。 一些使用场景: 对于每个http请求,我都会创build一个带有lambda的setTimeout,这个lambda可能具有对作用域对象的引用。 范围对象也有对超时对象的引用等等。 对于每一个用户会话,我有一个指针 (仍然在做C编程)引用的http请求对象,它也有会话对象的引用,等等…请求对象经常被删除,但会话对象不是。 编辑:我问,因为这个链接,我在网上findhttp://lifecs.likai.org/2010/02/how-generational-garbage-collector.html

这个function可以被垃圾收集吗?

考虑一下这个蛋糕…嗯,代码: 'use strict' function doWork () { return new Promise(function (resolve, reject) { // work work work… // Done! But… where's the resolve() ??? }) } doWork().then(function doMoreWork () { // Some more work to do… }) 一旦Promise的构造函数中的函数完成… Promise对象是垃圾回收对象吗? doMoreWork()垃圾回收的吗? 我的猜测是doMoreWork()不能直接进行GC编辑,因为Promise保留了对它的引用,但是一旦promise的主体完成并将执行上下文返回到上层(?)作用域,栈就会展开(因为没有更多声明在这里执行),Promise变得无法访问,因此被垃圾收集。 你能证实我对这个话题的理解是正确的吗? 我怎么能凭经验观察这种行为? 换句话说,我该如何监控哪些对象正在进行GC编辑以及何时? 我纯粹在Node.js中开发,如果这有什么区别的话。

时间为node.js垃圾收集

最近,我已经安装了https://github.com/lloyd/node-memwatch进行开发,以调查GC如何与我的程序进行交互。 我已经把“stat”这个事件绑定了,arthor声明这个事件是在GC执行时触发的。 我发现,当脚本高负载。 “stat”事件不会被触发。 我不确定这是否意味着GC没有执行,但这是一个GC可能没有触发的迹象。 在我的生产服务器上,整个一天的负载甚至更高。 我很确定GC没有机会表演。 内存使用量没有减less的机会。 这就像内存泄漏。 我的观察是否正确? GC持续高负荷时不能执行吗? 如果是这样,我应该使用暴露的GC接口强制GC? GC阻塞? 我是否应该更频繁地执行GC,以便GC不会长时间阻塞每个GC? 我知道手工GC是不是一个好主意(有人反对node.js手动GC的想法,但我找不到链接的参考),但我看到内存使用量不断增加。 这确实需要解决。

垃圾收集器在Node.js中

根据谷歌,V8采用了“停止世界,世代,准确,垃圾收集器”高效的垃圾收集。 声明的一部分是V8在执行垃圾回收循环时停止程序执行。 一个显而易见的问题是,如何在暂停程序执行时拥有高效的GC? 我试图find更多关于这个话题的信息,因为我有兴趣知道当你每秒发送几十个请求并触发你的node.js服务器时,GC如何影响响​​应时间。 任何专家的帮助,个人经验或链接将不胜感激 谢谢

nodejs v8内存gc分配失败

我试图用一个什么都不做的服务器来configurationnodejs v8内存。 我使用节点memwatch来获取堆差异。 在连接和连接closures之前,我收集堆信息。 我用节点memwatch。 我尝试从客户端200并发连接。 这是连接撕下后的gc轨迹。 谁能帮我理解: 为什么记忆力在​​增加? 在连接断开之后,服务器绝对没有任何作用。 它不应该总是下降,因为垃圾收集? 2.这些分配失败是什么? 我如何真正解释这里的痕迹? 15802 ms: Mark-sweep 8.9 (45.0) -> 8.1 (45.0) MB, 58 ms [allocation failure] [GC in old space forced by flags]. 16144 ms: Mark-sweep 9.2 (45.0) -> 8.4 (45.0) MB, 53 ms [allocation failure] [GC in old space forced by flags]. 16495 ms: […]