Java虚拟机——Java内存区域本地⽅法栈

1:是什么?

⽤于作⽤于本地⽅法执⾏的⼀块Java内存区域,

用来⽀持native⽅法执⾏,

native关键字说明其⽅法是一个原⽣态方法,方法对应的实现不是在当前文件,⽽是在⽤其他语⾔(如C和C++)实现的文件中

2:为什么? 

       与Java虚拟机栈类似,每个⽅法在执⾏的同时会(在本地方法栈,这个与Java虚拟机栈帧创建栈帧地方不同)创建⼀个栈帧(Stack Framel)⽤于存储局部变量表、操作数栈、动态链接、⽅法出⼝等信息。每⼀个⽅法从调⽤直⾄执⾏完成的过 程,就对应着⼀个栈帧在虚拟机栈中⼊栈到出栈的过程,

      java虚拟机栈是为了java虚拟机执行字节码所服务,而本地方法栈则是为了执行native方法所服务的,所以本地方法也是一个私有的内存区域,也是后进先出栈,作用是支撑native方法的调用

3:特点? 

  • HotshotJava虚拟机栈和本地⽅法栈合⼆为⼀
  • 本地方法(也就是native方法)执行完毕后相应的栈帧也会出栈并释放内存空间.也会抛出OutOfMemoryError和StackOverflowError异常.
  • 后进先出(LIFO)栈为以下描述:

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

此处内容来源于https://blog.csdn.net/hnust_lizeming/article/details/88891651  博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值