关于使用Javascript创建动态对象,我几乎没有什么基本问题。 我知道浏览器负责为任何新的'分配内存空间。在JS中找到的关键字。如果我的理解是正确的,那么我会逐一查询。
查询#1:请参阅下面给出的评论内容'示例'功能。这是我的第一个问题。
function sample() {
var a = 5; // is the memory allocated for variable 'a' in stack ?
var b = new obj1(); // The object instance created for 'obj1' gets allocated in heap?
}
var obj1 = function() {
this.strDate = "";
}
查询#2:一旦执行范围超出了函数sample(),浏览器引擎是否会释放为这两个变量分配的内存。我读过有关GC的参考算法&标记和扫描算法 并建议一旦不使用就将null分配给变量,但却无法像我们在C ++中那样对要遵循的标准有明确的认识。如果变量a存在于堆栈中,那么我不必担心 如果obj1实例不再可访问或说没有标记或没有进一步引用它,它是否也会被GC清除?
查询#3:浏览器在使用' new'创建的实例分配和释放内存方面有所不同。运营商。 (我之前只看过chrome中的堆分析器,而且还有很多与它相关的术语,但我也遇到了堆栈空间错误。这是否意味着所有浏览器都会普遍使用堆栈和堆栈?
请在这里帮助我;)
答案 0 :(得分:3)
call stack exceeded
,当调用太多函数时(主要是由于递归)会发生错误。