「深入浅出NodeJS」第一次读取数据到内存时,是否会放入老生代内存?
最近在看《深入浅出Nodejs》,关于第五章有一些疑问:
-
V8的内存管理,是先放入新生代内存,垃圾回收时如果变量还存在,就放入老生代内存, 或者是新生代中的
To semispace
使用超过25%了才放入老生代内存。那么这里存在一个问题, 如果程序执行的第一次读入数据到变量中,此时还没有经过垃圾回收,To semispace
用量也未超过25%,但是这个变量非常占内存,已经超过了新生代内存的限制,新生代内存根本放不下,这个时候是如何来处理的呢? -
既然新生代内存只是分成了两
semispace
,为何最大保留空间中要给新生代分配4 * reserved_semispace_size的空间,注释中写的ensure that new space can be aligned to its size
,完全没懂点在哪儿。与文中前文的对照来看,新生代的最大内存是为2 * reserved_semispace_size的,那这个4 * reserved_semispace_size多出来的没有分配给新生代吗?