QuickJS的垃圾回收算法
出处:
mp.weixin.qq.com
作者:
检心
内存管理,对于C/C++选手来说,是个再熟悉不过的名词。malloc/free,new/delete,一旦使用不当,就会遇到mem leak,uaf,double free等等内存问题。但是对于其他高级语言例如JAVA,JS等,似乎从来不需要关心他们创建对象的死活,是这些语言可以违背计算机的规律么?当然不是,只是这些语言底层的编译器/虚拟机自动对内存进行了管理,我们一般称之为GC(garbage collect)。 GC的历史可以追溯到上世纪50年代,从诞生之初起,它就像一个幕后英雄,默默做着奉献,帮助开发者提高了开发效率。在我看来,GC就像一种内存扩大技术:我们只需要不断的向其索取,而不用担心由于物理内存限制导致的内存问题。对于GC,虽然它能自动管理内存,但是当我们对它了解的越多,越能帮助我们在日常开发工作中提高代码效率。