Tag: v8

Node.js对Unicode的支持有多好?

根据其语言规范, JavaScript在Unicode中有一些问题(如果我理解的话),因为文本总是作为一个由16位组成的内部字符处理。 JavaScript:好的部分以类似的方式说出来。 当你search谷歌的V8支持UTF-8,你会得到矛盾的说法。 那么:Node.js中Unicode支持的状态是什么(0.10.26是这个问题的当前版本)? 它处理UTF-8将所有可能的代码点正确,或不是吗? 如果不是:可能的解决方法是什么?

setTimeout有没有限制?

具体讲(服务器端)V8,并假设我不关心准确性,因为我可以检测和补偿它,我可以从字面上设置成千上万相对简单的超时使用setTimeout彼此相隔,而不面对任何其他限制除了内存? 如果我使用的系统在任何时候可能有成千上万个计划的超时,那么我是否应该注意到这个问题? 为了logging,我已经阅读了John Resig关于Javascript定时器如何工作的优秀文章,所以不需要指出任何已经涵盖的东西:)我知道node.js是单线程的,定时器可以阻塞其他定时器,如果它们需要的时间太长等等 PS:我正在严格地理解我描述的是多么可行,没有必要指出“确实有更好的方法去做你打算做的事情!”。

Node.js和V8垃圾收集

以下是我目前阅读的内容,如果我错了,请纠正我的错误: Node.js基于V8 JavaScript引擎。 V8 JavaScript引擎实现世界各地的垃圾收集 这导致Node.js有时会完全closures几秒到几分钟来处理垃圾收集。 如果这是针对生产代码运行的,那么对于10,000个用户来说这是几秒钟。 在生产环境中真的可以接受吗?

在v8中,箭头的function比普通的独立函数声明更快吗(更高性能,更轻)?

我在问这个问题,因为我和我的同事在编码风格方面有争议,因为他更喜欢箭头函数声明: const sum = (a, b) => a + b; 我更喜欢旧式的独立function声明: function sum(a, b) { return a + b; } 我的观点是,旧式的代码更具可读性,可以更清楚地区分函数和variables声明。 他的观点是带有箭头函数的代码运行得更快。 当你使用旧式独立函数声明而不是箭头函数时,你是否知道一些关于实际性能处罚的问题(在v8中)? 罚款是否真的存在?

Node.js中的SyntaxError的行号

我有一些使用vm模块和runInNewContext函数的代码,并执行dynamic生成的JavaScript代码。 基本上是一个更安全的eval选项。 代码(可变code )可能包含语法错误,所以我想赶上它们并打印一些有用的信息。 try { vm.runInNewContext(code, sandbox, filename); } catch (e) { if (e instanceof SyntaxError) { // always false console.log(e.toString()); // "SyntaxError: Unexpected token ||" for example console.log(e.line); // how to get the line number? } } 我想打印语法错误的行号,但我有两个问题: 我不知道如何识别exception是SyntaxError还是别的。 instaceof不起作用(更新 – 我可以使用e.name === "SyntaxError" )。 即使我能够认出它,我怎么能得到行号呢? 可能吗? 提前致谢。 更新:我可以从e.stack得到一些信息 – 然而,堆栈跟踪中最顶层的调用是runInNewContext (使用它的行号),但是我仍然找不到code的行号,导致exception( SyntaxError […]

nodejs垃圾收集输出

任何人都知道我在哪里可以阅读关于nodejs中的–trace-gc选项的输出? 我不是要求解释gc是如何工作的,因为有很多关于它的信息,只是为了–trace-gc的输出。 我可以猜到一些领域的意义,但我不知道其他的。 例如 : 括号内数字的含义是什么, “步”meaining(这可能涉及到增量标记和懒惰扫) 写入的堆的大小是整个堆? (增加年轻人和老年人) … 一个例子 : [12994] 77042 ms: Scavenge 260.7 (298.1) -> 247.7 (298.1) MB, 9.4 ms [allocation failure]. [12994] 77188 ms: Scavenge 261.7 (298.1) -> 249.0 (300.1) MB, 7.4 ms [allocation failure]. [12994] 77391 ms: Scavenge 263.8 (301.1) -> 250.6 (302.1) MB, 8.1 ms [allocation failure]. [12994] […]

nodejs减less了v8垃圾收集器的内存使用量

我正在使用util模块debuggingnodejs应用程序,而heapUsed值保持在30-100MB左右, heapTotal值增长到1.4GB。 这是一个关于类似行为的问题 我读过,这是如何V8垃圾收集器的行为方式,但问题是如何减less它分配的内存量(使其小于1.4GB),例如,如果在512 MB设备上运行例如

NodeJS内存消耗在无限循环中

我不知道这是一个与节点或V8的错误,但如果我运行下面的代码节点进程泄漏内存。 GC似乎从来没有踢过,在几秒钟内它消耗> 1GB的内存。 这是意想不到的行为。 我错过了什么吗? 代码如下: for(;;) { console.log(1+1); } 很显然,这是一个有点人为的情况,但我可以看到一个长期运行的过程永远不会释放内存的问题。 编辑:我试了v0.5.10(不稳定)和v0.4.12(稳定),不稳定的版本performance更好一点 – 稳定版本只是停止输出到控制台,但继续消耗内存,而稳定版本继续执行并消耗内存而不会暂停。

从节点转储v8 JIT输出

node.js(或者一些其他的v8接口或v8的wrapper)能从v8 JIT中输出生成的程序集吗? 我想看看生成的程序集看起来像各种片段。

如何从Node.js调用C ++代码?

我目前正在开发一个在服务器上运行的模拟器,并且应该在浏览器中显示数据。 为了提供文件,通信和类似的东西,我想使用Node.js. 但是,我不确定它是否能像计算部门那样执行,所以我想用C ++来开发模拟部分。 仿真分为独立的“世界”,这些世界都以一些初始参数开始。 做这个的最好方式是什么?