【问题标题】:The Internal Java Memory Model for Thread Stacks线程堆栈的内部 Java 内存模型
【发布时间】:2019-02-25 08:20:12
【问题描述】:

我正在阅读有关 Internal Java Memory Model 的文章。 有一点我想问:

Java 虚拟机中运行的每个线程都有自己的线程堆栈。线程堆栈包含有关线程调用了哪些方法以到达当前执行点的信息。

为什么每个线程都需要保存有关已执行方法的信息(!)?如果它与上下文切换有关,那么(如果我没记错的话)线程必须保存有关当前正在执行的方法的信息。 保存已执行方法的信息的实际需要是什么?

【问题讨论】:

  • “已调用”与“已执行”不同

标签: java multithreading memory-management jvm allocation


【解决方案1】:

这是指当前活动的方法。请注意,一个线程中可以有多个方法同时处于活动状态(A 调用 B 调用 C,...)。堆栈不包含有关已完成方法的信息。

【讨论】:

    【解决方案2】:

    我认为改写这一段会使它更清晰、更容易理解:

    Java 虚拟机中运行的每个线程为其调用堆栈分配一些内存。调用堆栈包含有关线程调用了哪些方法以到达当前执行点的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      相关资源
      最近更新 更多