首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个正在运行的JVM程序中有多少类型的堆栈?

一个正在运行的JVM程序中有多少类型的堆栈?
EN

Stack Overflow用户
提问于 2018-01-18 12:04:46
回答 1查看 500关注 0票数 1

这个问题很明显。当我准备好JVM规范时,我遇到了Java堆栈

"2.5.2 Java虚拟机堆栈“ 每个Java虚拟机线程都有一个私有Java虚拟机堆栈,与线程同时创建。Java虚拟机堆栈存储帧(§2.6)。Java虚拟机堆栈类似于传统语言(如C)的堆栈:它保存局部变量和部分结果,并在方法调用和返回中发挥作用。因为除了推送和弹出帧之外,Java虚拟机堆栈从来不被直接操作,所以帧可能会被堆分配。Java虚拟机堆栈的内存不需要是连续的。

因此,除了线程堆栈之外,还有哪些类型的堆栈是可以使用的,或者是我们可以分类的呢?

EN

回答 1

Stack Overflow用户

发布于 2018-01-18 12:10:59

规范中的一些堆栈类型是:

1) 操作数栈:每个帧都包含一个称为操作数堆栈的后进先出(LIFO)堆栈。帧的操作数堆栈的最大深度在编译时确定,并与与帧关联的方法的代码一起提供。

2) 本机方法栈:Java的实现可以使用传统的堆栈(俗称"C堆栈“)来支持本机方法(用Java编程语言以外的语言编写的方法)。本机方法栈也可以由Java虚拟机指令集解释器的实现使用,例如C语言。Java虚拟机实现不能加载本机方法,并且不依赖于传统的堆栈,不需要提供本机方法堆栈。如果提供,则通常在创建每个线程时为每个线程分配本机方法堆栈。

3) Java虚拟机栈:你在问题中提到过。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48320931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档