1
eason1874 2022-04-07 20:50:07 +08:00
1GB 以上吧,你本地写段代码真塞 100 万数据进去不就知道了
|
2
eason1874 2022-04-07 20:52:42 +08:00
不对,脑子短路了,算错了,应该不到 100MB
|
3
noe132 2022-04-07 20:53:29 +08:00
不同引擎实现不同占用的内存也不同。
不过可以大概估算,uuid 就是个 36 字符的字符串,number 如果格式统一就是个 int32 。如果没有介入优化,通常就是一个大数组,那么就是字符串+int32 的大小 x 1m 。如果介入优化,还需要加上 hashtable 的大小。 |
4
krapnik 2022-04-07 21:52:40 +08:00 1
|
5
secondwtq 2022-04-07 23:37:22 +08:00
Chrome 的 Web Inspector 里面有一个 Memory Tab ,可以分析内存占用。
试了一下: const l = 1000000, data = {} for (let i = 0; i < l; i++) data[i.toString().padStart(36, '0')] = Date.now()+i; key 约占 48MB ,也就是说一个 string 48 字节,value 占 12MB ,一个 number 12 字节,再加上外面约 25MB ,一个键值对应该是 24 字节差不多 |
6
libook 2022-04-08 10:09:07 +08:00
Node 使用 VM 来运行程序的,这玩意的设计初衷就是让用户把精力放在业务上而不是资源管理上,所以有很多内置的优化策略,以及复杂的 GC 策略,对于用户来说是黑盒,最可靠的方式是进行压测,取个大概的资源数量级。
如果对内存使用有精确要求,建议使用可以明确操作内存的语言,比如 C/C++。 |
7
wu67 2022-04-08 10:15:39 +08:00
8 楼说的很对. 压测基本能分析出你的内存大致占用范围以及部分优化点, 真要更较真的花, 应该选择更底层一点的语言, 如 c/ 汇编.
|