美文网首页
一.调用栈执行

一.调用栈执行

作者: 林不羁吖 | 来源:发表于2020-11-18 23:01 被阅读0次

1.JavaScript引擎

1.1 V8引擎

1.是什么?

  • 1.一个流行的JavaScript引擎是谷歌的V8引擎
  • 2.V8引擎由两个主要组件所组成:
    Memory Heap--内存分配区
    Call Stack--代码运行时栈

1.2 运行时

什么是运行时?有什么用?

1.3 调用栈

1.what?

调用栈是一个记录程序运行到哪里的数据结构。调用函数的时候,我们会把它放到栈的最顶部。从函数返回的时候,我们会把它从栈的最顶部弹出来。这就是调用栈做的所有的事情。

function multiply(x, y) {
    return x * y;
}
function printSquare(x) {
    var s = multiply(x, x);
    console.log(s);
}
printSquare(5);
image.png

2.调用栈的状态

每次进入调用栈的函数都会成为栈帧。
当一个异常抛出时,栈的记录就是根据栈帧组成的。
当一个异常发生的时候调用栈的状态。看一下如下代码:

function foo() {
    throw new Error('SessionStack will help you resolve crashes :)');
}
function bar() {
    foo();
}
function start() {
    bar();
}
start();
image.png

“栈溢出”

"栈溢出"发生在超过调用栈最大空间的时候。
当你使用递归但又没有非常严格的测试你的代码的时候很容易发生。看一下如下代码示例

function foo() {
    foo();
}
foo();

当引擎开始执行这段代码的时候,首先调用“foo”函数,但是这个函数是递归的,开始调用自己并且没有结束条件。所以每一步执行,相同的函数都会一遍又一遍的加入到调用栈中,看上去就像这样


image.png

然而在某个时间点上调用栈中的函数调用数量将会超过调用栈的实际大小,此时浏览器决定采取行动,抛出一个错误,我们就会看到像下面这样的提示:


image.png

3.并发和事件循环

在调用栈中存在需要花费很多时间的函数调用时会发生什么呢?这就是下一篇文章要讨论的并发和事件循环

转自https://juejin.im/post/6844903734011494413#heading-2

相关文章

  • 一.调用栈执行

    1.JavaScript引擎 1.1 V8引擎 1.是什么? 1.一个流行的JavaScript引擎是谷歌的V8引...

  • JavaScript栈大小-javascript stack s

    JavaScript引擎采用调用栈(call stack)来管理执行上下文(执行环境), 然而调用栈是有大小限制的...

  • js尾递归

    适当的尾调用可以避免递归调用时的栈膨胀 js有个执行栈,每当要执行一个函数时都会将这个函数推入栈,执行完从栈弹出。...

  • [转载]C语言函数调用栈

    原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...

  • iOS开发--探究iOS线程调用栈及符号化

    探究iOS线程调用栈及符号化 概念 调用栈,也称为执行栈、控制栈、运行时栈与机器栈,是计算机科学中存储运行子程序的...

  • JS执行模式

    同步执行模式-调用栈 工作表(通俗说法)押入栈 弹出 时间太长 =》 阻塞 =〉异步模式 异步执行模式:不会等待这...

  • JVM字节码执行引擎

    一、运行时栈帧结构 栈帧(Stack Frame)是用于JVM执行方法调用和方法执行的数据结构,是虚拟机栈的元素。...

  • 执行上下文(个人笔记)

    本文参考:javaScript执行上下文和执行上下文栈一篇文章看懂JS执行上下文什么是执行上下文?什么是调用栈? ...

  • 虚拟机的方法调用和字节码执行

    目录 一、运行时栈帧结构二、方法调用三、方法执行 一、运行时栈帧结构 栈帧是用于支持虚拟机进行 方法调用 和 方法...

  • JS深入(执行上下文)

    JavaScript的内存生命周期 函数调用栈 栈底永远都是全局上下文,而栈顶就是当前正在执行的上下文。 执行上下...

网友评论

      本文标题:一.调用栈执行

      本文链接:https://www.haomeiwen.com/subject/voehiktx.html