Tag: v8

如何在NodeJS插件中创build一个类返回另一个插件?

有了这个类,我可以在另一个插件的源代码中创build一个实例。 但是,如何包装对象并将其返回? class foo : public ObjectWrap { public: int mydata; // intentionally not exposed in node foo(){ mydata = 4; } static Persistent<Function> constructor; static void Init(){ Local<FunctionTemplate> s = FunctionTemplate::New(New); s->SetClassName(String::NewSymbol("foo")); s->InstanceTemplate()->SetInternalFieldCount(1); constructor = Persistent<Function>::New(s->GetFunction()); } static Handle<Value> NewInstance() { HandleScope scope; Local<Object> in = constructor->NewInstance(); return scope.Close(in); } static Handle<Value> New(const Arguments& […]

什么是pipe理node.js的堆大小的最佳解决scheme

我们将分析Twitter数据,因此我们将使用节点,但是我们面临的问题是旧版本的v8 chrome engine没有提供超过1.9 gb堆大小(64位)(我们的同事对亚马逊数据进行了分析他们面临这个问题,他们克服了这个问题,使用分布式计算,但这不是一个好的解决scheme)。 现在正式给我们多less堆大小的64位V8铬引擎。 什么是最好的解决scheme? 我们一直在网上search大量的文章和解决scheme。 io.js适合这样的任务吗?

无法在节点12.7中安装LDAP

我已经将我的节点版本从10升级到12.7,之后我的LDAP模块不工作。当我试图安装最新的LDAP版本时,我得到了下面的错误 npm安装LDAP > node-gyp rebuild gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.12.7" gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/ubuntu/node_modules/LDAP/.node-gyp" make: Entering directory `/home/ubuntu/node_modules/LDAP/build' CXX(target) Release/obj.target/LDAP/src/LDAP.o ../src/LDAP.cc:10:18: fatal error: ldap.h: No such file or directory compilation terminated. make: *** [Release/obj.target/LDAP/src/LDAP.o] Error 1 make: Leaving […]

inheritanceC ++中的JavaScript函数

我有一个JavaScript的基本function: function Animal { } Animal.prototype.move = function () { //… } 我也有一个派生的JavaScript函数,像这样: function Dog { Dog.super_.call(this); } util.inherits(Dog, Animal); Dog.prototype.bark = function () { // … } 现在我想创build一个与派生的Dog JavaScript函数完全相同的C ++插件: void Dog::Init(Handle<Object> exports, Handle<Object> module) { Isolate* isolate = Isolate::GetCurrent(); Local<Function> require = Local<Function>::Cast(module->Get( String::NewFromUtf8(isolate, "require"))); Local<Value> args[] = { String::NewFromUtf8(isolate, "./animal") }; Local<Value> […]

是否可以在node.js中使用进程内caching(由Buffer支持)?

Node.JS有内存限制1Gb,也有GC,所以用它来存储大量消耗大量内存的对象并不好。 但是,Node.JS也有Buffer类,它存储在v8之外。 而且,虽然单个缓冲区也应该小于1Gb,但可以使用总大小> 1Gb的多个缓冲区。 那么,在Node.js中使用Buffer来创build进程内Cache是​​否可行呢? 在我的情况下,我不需要顶级的performance,平均performance会很好。 我们能期待它会比Redis差十倍吗?

ECMAScript 6function在Node.js 0.12中可用

Node.js(0.12)的一个新的稳定版本最近登陆升级的Google的v8 JavaScript引擎, v3.28.73 。 什么ECMAScript 6function目前在Node.js中,而不使用–harmony标志? 我检查了几个网站,声称列出的ES 6function,但他们都似乎过时了 – 最显着的是, 这张表 ( 更新: 现在更新与当前Node.js状态0.12 ),因为几个function被列为需要–harmony标志,而我发现其中一些是默认启用(地图,集合,符号,仅举几例)。 更新 : 节点特定的表已经可用 此外,试图纯粹为v8引擎谷歌这个信息提供了最新的信息 – 目前的v8版本是4.2。* ,这是比Node.js使用相当的领先。 我希望这个问题(及其答案)将成为一个全面的总结,介绍了Node.js开发人员现在可以使用哪些ES 6function。 在Node.js 0.12中启用了ES 6function我目前知道: 地图,集合/弱地图,弱集合 符号 Object.observe 承诺 数 .isInteger .isSafeInteger .isNaN 小量 .MIN_SAFE_INTEGER .MAX_SAFE_INTEGER math .clz32 .imul 。标志 .log10 .log2 .log1p .expm1 .cosh .sinh .tanh .acosh .asinh .atanh .trunc .fround .cbrt […]

为什么TLSWrap对象消耗内存?

我正在使用nodejs 4.2.3版本,最近我观察到,在将数据上传到S3存储区时,内存堆积得很快(大约每个文件大小为1.5 GB)。 我采取了堆快照,显示TLSWrap对象保留大小1GB左右。 任何人都面临同样的问题? 提前致谢。

增加节点内存

我运行的是Protractor(它使用了使用V8的Node),以便运行一些浏览器testing。 我已经开始得到以下内存错误: 02:34:40.051 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed – process out of memory 02:34:40.051 02:34:40.051 <— Last few GCs —> 02:34:40.051 02:34:40.052 1003893 ms: Scavenge 1397.2 (1458.3) -> 1397.2 (1458.3) MB, 1.1 / 0 ms (+ 59.3 ms in 1 steps since last GC) [allocation failure] [incremental marking delaying mark-sweep]. 02:34:40.052 1004839 ms: Mark-sweep 1397.2 […]

TypeError:str.charCodeAt不是一个函数

我今天更新到节点版本6,可能已经打破了一些东西。 我试图回到节点5.10,但问题并没有消失。 这可能与节点v6发布的新V8引擎有关吗? 有没有人经历过这个? 任何想法? 最后一行我可以放置一个断点(在node_modules / superagent / lib / node / index.js中): `if ('string' != typeof url) url = format(url);` variablesurl的值是一个string,看起来像一个有效的url format()在url模块中作为urlFormat() 错误: TypeError: str.charCodeAt is not a function at encodeAuth (url.js:929:17) at Request.Url.format (url.js:543:12) at urlFormat (url.js:535:63) at new Request (/develop/sl/node_modules/superagent/lib/node/index.js:129:11) at request (/develop/sl/node_modules/superagent/lib/request.js:26:12) at Request.use (/develop/sl/node_modules/superagent/lib/request-base.js:65:3) … 更新:这可能与V8引擎无关,因为它仍然是v4,而不是新的v5。 $ node -pe […]

NodeJS V8没有做适当的垃圾收集

我有这个简单的http服务器 var http = require('http'); var server = http.createServer(function(request, response) { var data = []; for ( var i=0; i < 1000000; i++ ) { data.push({}); } response.end('Done'); }); server.listen(3000); 当我启动服务器时,进程使用大约8MB的内存。 当我向服务器发出请求时,内存使用量会上升到100MB以上,并且保持这种状态。 然后,我坚持F5几秒钟,垃圾邮件的一些要求和内存使用量增长超过400MB在某些点。 当所有请求都被处理时,服务器仍然使用超过100MB。 当我提出另一个请求时,内存有时会高于或接近200MB或保持大致相同。 我让服务器运行一段时间,内存不会被释放。 我试着把date = null ,结果是一样的。 然后我试着运行带有–expose-gc标志的服务器,并且在我–expose-gc这个值之后放上global.gc() ,结果会更好,但是内存仍然保持在50MB以上。