使用";新的";在Javascript中
Memory allocation using "new" in Javascript
关于使用Javascript创建动态对象,我有一些基本问题。我知道浏览器会为JS中的任何"new"关键字分配内存空间。如果我的理解是正确的,那么我有以下疑问。
查询#1:关于"sample"函数内的两行内容,请参阅下面的注释。这是我的第一个问题。
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中看到过堆评测器,很少有其他相关术语,但我也遇到过"堆栈外空间"错误。这是否意味着所有浏览器都会普遍使用堆栈和堆?
请帮我一下;(
- 作为一名程序员,在JavaScript中,您无法控制堆栈或堆的分配。您可以创建位于内存中某处的对象或基本体。内部JS引擎(如V8或Spidermonkey(执行各种优化。一般来说,你可以把所有的东西都看作是堆起来的
- 要开始,您需要知道GC从未被引用的对象中释放内存。当您在代码中的某个地方持有对对象的引用时,它不会被销毁
- 浏览器(JS引擎(不会向您泄露内存分配抽象。您所指的错误可能是
call stack exceeded
,当调用过多函数时会发生这种情况(主要是由于递归(
相关文章:
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- Javascript复选框函数:;缺少:在属性id之后"
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 插入“;img src"在javascript中
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 如何's css标记"-webkit最小设备像素比”;在Javascript中实现
- 内联javascript与"<脚本>"字符串错误地关闭了脚本标记
- 什么是"!函数(){}〃;javascript中的mean/do
- 使用javascript"这个“;用于jquery选择器
- 我可以在不使用乘法运算符“”的情况下进行乘法运算吗*"在JavaScript中
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- 什么是==+"在javascript中
- 什么是“;回归"javascript中的mean
- 可以't删除“;C: fakepath "使用javascript替换和regex
- 如何删除“"使用javascript从字符串中提取字符
- 如何使用Javascript获取当前页面URL,并在<a href="[the_URL]”>
- JavaScript异常:“;不成形”;在firefox浏览器上;XMLHttpRequest"chrome浏
- button1.Attributes.Add(“onclick"“javascript: window.open