标签: v8

Node.js和V8之间有什么关系?

我一直在考虑这个问题,似乎无法找到答案.Node.js和V8之间有什么关系?并且Node.js可以在没有V8的情况下工作吗?

v8 node.js

31
推荐指数
2
解决办法
9145
查看次数

如何在V8 Javascript引擎中公开C++类,以便可以使用new创建它?

暴露Point类的官方示例似乎假设程序中将有固定数量的实例.当在Javascript中调用new时,不清楚如何在C++代码中分配新实例.

你如何公开一个可以拥有多个实例的类?例如,一个Image类:

var img1 = new Image( 640, 480 );
var img2 = new Image( 1024, 768 );

img1.clear( "red" );
img2.clear( "black" );
Run Code Online (Sandbox Code Playgroud)

javascript c++ v8

30
推荐指数
2
解决办法
2万
查看次数

为什么新的慢?

基准:

JsPerf

不变量:

var f = function() { };

var g = function() { return this; }
Run Code Online (Sandbox Code Playgroud)

测试:

下面按预期速度顺序排列

  • new f;
  • g.call(Object.create(Object.prototype));
  • new (function() { })
  • (function() { return this; }).call(Object.create(Object.prototype));

实际速度:

  1. new f;
  2. g.call(Object.create(Object.prototype));
  3. (function() { return this; }).call(Object.create(Object.prototype));
  4. new (function() { })

问题:

  1. 当您交换fg内联匿名函数时.为什么new(测试4.)测试更慢?

更新:

具体是什么导致new要慢时fg内联.

我对ES5规范的引用或对JagerMonkey或V8源代码的引用感兴趣.(请随意链接JSC和Carakan源代码.哦,如果他们愿意,IE团队可以泄漏Chakra源代码).

如果您链接任何JS引擎源,请解释它.

javascript v8 javascript-engine ecmascript-5

30
推荐指数
2
解决办法
2726
查看次数

node.js的垃圾收集

我很好奇嵌套函数的node.js模式如何与v8的垃圾收集器一起工作.这是一个简单的例子

readfile("blah", function(str) {
   var val = getvaluefromstr(str);
   function restofprogram(val2) { ... } (val)
})
Run Code Online (Sandbox Code Playgroud)

如果restofprogram长时间运行,这是不是意味着str永远不会被垃圾收集?我的理解是,对于节点,你最终会使用嵌套函数.如果在外部声明restofprogram,这是否会收集垃圾,因此str不在范围内?这是推荐的做法吗?

编辑我不打算让问题复杂化.那只是粗心大意,所以我修改了它.

javascript v8 node.js

29
推荐指数
2
解决办法
1万
查看次数

V8中的堆栈和堆(JavaScript)

V8是否像JVM一样使用堆栈和堆?如果是这样,它将原语放在堆栈上和堆上的对象上?

javascript v8

29
推荐指数
2
解决办法
1万
查看次数

nodejs内存不足

我今天遇到了一个奇怪的问题.对于其他人来说,这可能是一个简单的答案,但它让我难过.为什么下面的代码会导致内存错误?

var cur = 167772160;
var bcast = 184549375;
var addresses = [];
while (cur <= bcast){
  cur += 1;
  addresses.push(cur);
}
addresses.length 
addresses // memory goes from a few megs to over a gig in seconds when trying to print this
Run Code Online (Sandbox Code Playgroud)

我得到了这两个错误中的一个......第一个是我在node的解释器中运行这个代码而后者是我在nodeunit中运行它时:

致命错误:CALL_AND_RETRY_2分配失败 - 处理内存不足

致命错误:JS分配失败 - 处理内存不足

javascript v8 node.js

29
推荐指数
2
解决办法
5万
查看次数

使用参数从c ++调用v8 javascript函数

我正在使用c ++和v8,并遇到了以下挑战:我希望能够使用v8在javascript中定义一个函数,然后通过c ++调用该函数.另外,我希望能够从c ++将参数传递给javascript函数.我认为以下示例源代码最能解释它.检查示例代码的末尾,看看我想要完成什么.

#include <v8.h>
#include <iostream>
#include <string>
#include <array>

using namespace v8;

int main(int argc, char* argv[]) {

    // Create a stack-allocated handle scope.
    HandleScope handle_scope;

    // Create a new context.
    Persistent<Context> context = Context::New();
    Context::Scope context_scope(context);
    Handle<String> source;
    Handle<Script> script;
    Handle<Value> result;

    // Create a string containing the JavaScript source code.
    source = String::New("function test_function(test_arg) { var match = 0;if(test_arg[0] == test_arg[1]) { match = 1; }");

    // Compile the source code.
    script = Script::Compile(source);

    // …
Run Code Online (Sandbox Code Playgroud)

c++ v8 embedded-v8

29
推荐指数
2
解决办法
2万
查看次数

如何在Java应用程序中嵌入V8?

我正在寻找一种在我的Java应用程序中嵌入Google JavaScript引擎V8的解决方案.

你有一些解决方案吗?

javascript java v8 embedded-v8

28
推荐指数
3
解决办法
2万
查看次数

如何使用断点和所有内容调试节点js应用程序?

我已经安装了node-inspector,以发现它不支持断点:| 它有什么意义,请记住,大部分节点代码是异步的,你根本无法一步一步地遵循它?

我在这里肯定错过了一点......

无论如何用断点和一切来调试节点代码?

debugging v8 node.js node-inspector

28
推荐指数
3
解决办法
3万
查看次数

在iOS Safari上避免使用JavaScript构造/模式?

我有一个包含大量生成的JavaScript的Web应用程序.与UIWebView在(更新的)iPad上运行Web应用程序相比,在桌面上运行Chrome应用程序之间的内存消耗相差6倍.

我应该避免哪些构造或模式使iOS上的内存消耗与Chrome的内存消耗相同?

生成的JavaScript的特征:

  • 代码由Haxe生成.
  • 代码是"面向对象的",因为它大量使用prototype,但是以文明的方式.
  • 该代码大量使用JavaScript对象上的命名索引来实现哈希表.
  • 有很多字符串,但几乎没有任何字符串连接.

似乎没有任何内存泄漏; 在构建(固定的)Javascript对象时,iOS上的内存消耗过多.

javascript v8 haxe ios javascriptcore

28
推荐指数
1
解决办法
769
查看次数