Java本地方法栈

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HNUST_LIZEMING/article/details/88891651

本地方法栈和Java虚拟机栈实现的功能类似,只不过本地方法栈是本地方法运行的内存模型.本地方法被执行的时候,在本地方法栈也会创建一个栈帧,用于存放该本地方法的局部变量表\操作数栈\动态链接\出口信息.

方法执行完毕后相应的栈帧也会出栈并释放内存空间.也会抛出OutOfMemoryError和StackOverflowError异常.

Java本地方法栈的特征:

本地方法栈和java虚拟机栈十分相似,差别不过是java虚拟机栈是为了java虚拟机执行字节码所服务而本地方法栈则是为了执行native方法所服务的所以本地方法也是一个私有的内存区域,也是后进先出栈,作用是支撑native方法的调用,执行和退出与java虚拟机栈一样也会出现以上两种异常,可以自己选择实现本地方法栈,有一些虚拟机(如HotSpot)将java虚拟机栈和本地方法栈合并实现。

其中后进先出(LIFO)栈为以下描述:

java虚拟机栈和程序计数器一样,他是线程私有的内存区域,他的生命周期与线程相同,java虚拟机栈描述的是java方法执行时候的内存概念模型,每个方法在执行的时候都会创建一个栈帧,用来创建这个方法的操作数栈,局部变量表,方法出口,动态链接等信息,每一个方法在调用和结束的过程就对应了一个栈帧在虚拟机栈中入栈到出栈的过程,java虚拟机栈是一个后进先出栈,靠后执行的方法会优先完成,后面进入虚拟机栈的栈帧优先被出栈,这与我们平时执行java方法的印象是一致的,在程序执行中java方法的调用,执行和退出,都与java虚拟机栈里面存储的栈帧有着密切的联系。

猜你喜欢

转载自blog.csdn.net/HNUST_LIZEMING/article/details/88891651