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

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

“2.5.2 Java虚拟机堆栈”

每个Java虚拟机线程都有一个私有Java虚拟机堆栈,与该线程同时创建。 Java虚拟机堆栈存储帧(第2.6节)。 Java虚拟机堆栈类似于传统语言(如C语言)的堆栈:它包含局部变量和部分结果,并在方法调用和返回中扮演角色。 由于除了推送和弹出框架之外,Java虚拟机堆栈从不直接操作,所以可能会分配堆栈。 Java虚拟机堆栈的内存不需要是连续的。

因此,除了线程堆栈之外,是否有使用或可以分类的任何类型的堆栈?


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

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

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

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

链接地址: http://www.djcxy.com/p/82747.html

上一篇: How many types of stack are there in a running JVM program?

下一篇: How Does JVM Uses Native Stack Manually For JAVA Function Call