V8内存使用情况

5

运行v8 Java脚本引擎所需的最低RAM是多少?

它适合内存有限的设备吗?我想在Android应用程序中使用Node.js作为嵌入式服务器。这是一个好主意吗?


1
你知道安卓使用的浏览器是使用V8引擎吗?这应该能回答你的问题。 - freakish
这是个好主意吗?这真的可能吗?Node.js不仅仅是运行在V8引擎之上的应用程序。我认为目前还不可能将其与Android(或任何移动操作系统)一起使用。 - freakish
可以在Android上使其工作。我找到了一些开源项目。我正在尝试评估一些可用的解决方案来在Android上运行HTTP服务器。我发现也可以使用Node-js..但是有什么优点和缺点呢? - Ranjith
基本的Node.js服务器 =(libUV + http_parser + v8)...但是可以通过使用(boost ASIO + http_parser)来实现类似的行为。 - Ranjith
内置的默认Android浏览器也一直使用V8。 - Jay Conrod
显示剩余2条评论
2个回答

10

V8以1 MB为单位的页面(pages)请求内存用于JavaScript堆。这些页面被分组到包含不同对象种类的空间(spaces)中。有7个空间(来自(from)、去向(to)、指针(pointer)、数据(data)、代码(code)、单元(cell)和映射(map)),或者如果计算大对象空间,则有8个空间。每个空间至少需要一个页面,因此至少需要7 MB。V8本身大约是3 MB(至少在ARM上,具体因情况而异)。此外,您需要另外约2 MB的刮擦空间。因此,总共最少需要12 MB。您可能希望在正常运行时总共拥有20-30 MB可用空间。

所有这些都应该轻松适合任何Android设备。我所知道的所有设备都至少有256 MB的RAM,您可以预期操作系统和其他应用程序使用至少其中一半。请注意,Android Web浏览器已经嵌入了V8并且没有问题。浏览器的V8实例可能比Node.js服务器的V8部分的内存占用更大。


通常情况下加1,尽管我不能同意最后一句话。一个什么也不做的Node.js服务器显然不会使用太多内存。但这不是重点,对吧?服务器应该“服务”于某些东西。而且处理连接也会消耗CPU和内存。总之:有一天我们肯定能够将移动设备变成远程服务器,但今天还不行。 - freakish

1

首先,我想了解如何将node.js嵌入到Android应用程序中。

关于您的问题:内存使用情况很大程度上取决于node.js/V8的各种编译标志、系统架构等因素,因此无法百分之百地回答您的问题。

调整垃圾收集器的行为也可能是有趣的。(粗略地说:更多的CPU(更频繁地进行垃圾收集)<-->更多的内存(“浪费”更多的内存并稍后清理)


是的,在Android上使用Node.js肯定很有趣。但我怀疑是否可能。毕竟,Node.js不仅仅是V8引擎。 - freakish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接