Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点为数组中的空值分配了多少内存_Javascript_Arrays_Node.js_Memory_Null - Fatal编程技术网

Javascript 节点为数组中的空值分配了多少内存

Javascript 节点为数组中的空值分配了多少内存,javascript,arrays,node.js,memory,null,Javascript,Arrays,Node.js,Memory,Null,跟进此线程: 我是用node.js做的: arr=[] arr[1000]=1 arr[1000000000]=2 arr.sort() 我得到了 FATAL ERROR: JS Allocation failed - process out of memory 这就给我留下了一个问题(我在Yahoogle上找不到它),在节点的数组中,实际为空条目分配了多少内存。我不打算使用100000000个条目,甚至不接近,但也许它仍然不值得分配内存 谁知道如何检查?编辑:对不起,不准确,可能不适用于

跟进此线程:

我是用node.js做的:

arr=[]
arr[1000]=1
arr[1000000000]=2
arr.sort()
我得到了

FATAL ERROR: JS Allocation failed - process out of memory
这就给我留下了一个问题(我在Yahoogle上找不到它),在节点的数组中,实际为空条目分配了多少内存。我不打算使用100000000个条目,甚至不接近,但也许它仍然不值得分配内存


谁知道如何检查?

编辑:对不起,不准确,可能不适用于JAVA。
对于在其他应用程序中需要它的人,仍然可能有帮助

引用数组正在分配x

因此,分配arr[100000]将分配100KB x 4b~=0.5Mb(近似值)

当然,如果你不打算使用所有的数组,
你应该考虑一个HASMMAP,它只是一个数据结构而已。 HashMap最好的搜索范围较大,项目数量相对较少


无论哪种方式,都有一些解决方案可以分配一个小阵列,并根据需要扩展它(如果需要)

总之,node.js不会为数组中未定义的值分配内存。我经历的崩溃一定是一个小故障,因为没有其他人可以复制它,安装最新的node.js版本也为我消除了这个问题。

不,JavaScript与其他语言不同。数组不是预先分配的。它们本质上是散列映射。我考虑过散列,但我仍然使用整数作为键,并且我需要能够按键对它们进行排序(或者至少保持它们的顺序不变),并按顺序对它们进行迭代。这听起来像是数组而不是散列的工作,不是吗?@EasierSaidThanDone您使用的是哪个版本的Node?这段代码对我来说很好(0.6.12),“但是我仍然使用整数作为键,我需要能够按键对它们进行排序(或者至少保持它们的顺序不变),并按顺序对它们进行迭代。”然后使用索引哈希是正常的。只需将每个键保留在一个大小为[numberofkeys]的数组中。对数组进行排序,或在存储键时对其进行排序。同时构建键/值对的散列。你的程序在Node 0.6.2中运行良好。在我看来,这并不依赖于Node.js,而是完全依赖于运行JavaScript的JavaScript引擎的实现,正如你引用的问题所述。数组包含
未定义的
值,不是
null
值。另外,需要注意的是,那些未初始化的数组项不是
null
——它们是
未定义的。这意味着它们不存在。他们真的一点都没有分配。(哈哈,就像@Eric sez。)但是node.js不是带来了它自己的引擎(V8)吗?你的node.js和我的(都是0.6)应该是一样的。我错过了什么?有趣的是,它并没有失败的一些。。。