Tag: 垃圾收集

如何在使用完成后清除/垃圾收集局部variables值

嗨,我试图导入一个巨大的数据。 其大约8GB有更多的53K文件。 我想要的是一次导入一个文件,完成其使用,然后删除/删除或垃圾收集caching。 我知道当我们使用delete关键字时,它只删除obj实例的引用。 删除或使variables值为null或undefined不起作用。 这是我的代码。 fs.readdir(dirname, (err, filenames) => { if (err) { onError(err); return; } _.forEach(filenames, (file) => { if (!!~file.indexOf('.json')) { this.synchronize(() => { let currentFile = require(`${dirname}${file}`); return new Promise((resolve, reject) => { setTimeout(() => { //assume am done working with the data imported in variable currentFile here. now i want […]

为什么“readFile”方法将文件的内容放入内存与“readFileSync”相反?

这是NodeJS代码(同步版本)的一个例子: var fs = require('fs'); var path = './parseLogFiles/reports'; var counter = 0; var totalFileSize = 0; var fileName; var fullPath; function toMb (byteVal) { return (byteVal / 1048576).toFixed(2); } var filesList = fs.readdirSync(path); console.log('Memory usage before files read:', toMb(process.memoryUsage()['heapUsed']) + ' MB'); for (var i = 0, len = filesList.length; i < len; i++) […]

在Node.js中,是否正在侦听EventEmitter,创build一个对它的引用?

如果我有这样的代码: const EventEmitter = require('events'); class Bot extends EventEmitter { sendMessage() { // do something this.emit('messageSent', 'user123'); } } class Controller { loadBot() { const bot = new Bot(); bot.on('messageSent', userId => { // do something }); } } 在loadBot创build的bot对象会立即被销毁吗? 或者稍后通过垃圾收集? 或者, Controller的实例是否持有对它的引用,以便在Controller实例被销毁之前, bot永远不会被销毁?

如何使用global.gc()在nodejs中将内存减less到最小?

我在这里find了相关的问题 但仍然没有得到真正的答案。 :(所以,如何使用global.gc()在nodejs中将内存减less到最小?我应该发送global.gc()函数来减less吗?

清除Node.js全局variables属性

我的问题不是关于“内存泄漏”,而是关于node.js(expressjs)应用程序的“内存清除”。 我的应用程序应该在服务期间为内存中的快速查找维护一些对象。 在启动应用程序之后(一两天),everthing似乎很好,直到突然我的Web客户端查找对象,因为它已被清除(未定义)。 我怀疑JavaScript GC(垃圾收集)。 但是,正如您在psedu-code中看到的那样,我将对象分配给node.js“global”variables属性,以防止GC清除它们。 请给我一些线索是什么导致了这个问题。 非常感谢您提供的build议〜 我的node.js环境是node.js 0.6.12,expressjs 2.5.8和VMWare cloudfoundry节点托pipe。 这是我的app.js伪代码: var express = require("express"); var app = module.exports = express.createServer(); // myMethods holds a set of methods to be used for handling raw data. var myMethods = require("myMethods"); // creates node.js global properties referencing objects to prevent GC from purging them global.myMethods […]

如何标记一个“新”对象的垃圾收集在Javascript(Node.js)

如果我不能避免在我的Node.js应用程序中使用“新”关键字,我如何有效地标记对象的垃圾回收? 我用一个相当高层次的构造函数创build一个新的对象(我的意思是new myObj()实际上在这个过程中创build了几个new Something()对象。 假设我的构造函数看起来有点像下面这样: function User(name, age) { this.something = x; this.greet = function() { return "hello"; }; this.somethingElse = new OtherThing(); return this; } 然后我在另一个函数中创build一个新的User : function createUserAndGreet(name, age) { var user1 = new User(name, age); user1.greet(); // now I don't need user1 anymore } (顺便说一句,我知道这个代码糟透了,但我认为这得到了我的观点) 在我迎接他之后,我怎样才能摆脱他,释放他所占有的记忆呢? 所以,如果我只是将user1设置为null与user1 = null; 在我和他结束之后,他会永远消失,GC会来打扫他吗? 这是否也会删除创build的new OtherThing() […]

V8垃圾收集可用内存吗?

我正在阅读V8文档 ,它说垃圾回收器“回收”内存。 我的问题是“回收”在自己的堆中使用的内存还是释放它? 提前致谢。

Node.jsnetworking套接字内存泄漏?

我有这个脚本 。 var net = require("net") , heapdump = require("heapdump"); function onConnection (client) { client.on("data", function (data) { client.end(); }); }; function onListen () { var socket = net.connect({host: "127.0.0.1", port: 3000}); socket.bigBuffer = new Buffer(50000000); //50MB Buffer heapdump.writeSnapshot(__dirname + "/initial.heapsnapshot", function writeInitialSnapshot () { console.log("Wrote initial heap snapshot"); socket.write("data"); }); socket.on("close", function () { […]

如何强制垃圾收集的生产Nodejs应用程序有一个无限的运行任务(爬虫)

我正在尝试在Nodejs中编写一个爬虫程序。 爬虫不断扫描链接,从这些链接收集信息,进行计算,排名,报废等。 唯一的问题是内存使用量不断增长,并且永远不会被收集。 我试过setTimeouts,process.nextTick(),将variables设置为null,声明全局variables,重用它们以避免垃圾等。 唯一有效的方法一直是重新启动应用程序。 有没有办法强制生产垃圾收集?

Mongoosestream&setInterval导致内存泄漏?

我正试图在我的节点应用程序中诊断内存泄漏问题。 我对V8中的GC非常困惑,我不知道如何防止节点内存泄漏。 我有下面的代码,在setInterval中使用mongoose查询stream 。 setInterval(function() { var stream = Book .find({}) .stream(); stream.on('data', function(book) { // … book.updated_at = new Date(); book.save(); // … }); stream.on('error', function(err) { }); stream.on('close', function() { }); }, 1000); 这个setInterval的事件处理程序是否会导致内存泄漏?