JVM 运行时内存空间详解——本地方法栈

Posted 格子衫111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM 运行时内存空间详解——本地方法栈相关的知识,希望对你有一定的参考价值。

通过上一篇文章,我们大体了解了JVM的整体架构,其分为:元数据(JDK7是方法区)、堆、虚拟机栈、本地方法栈、程序计数器几个部分。
在这里插入图片描述
本篇文章,咱们对本地方法栈进行剖析,一探究竟。

1. 什么是本地方法栈

本地方法栈(Native Method Stacks) 与虚拟机栈所发挥的作用是非常相似的, 其区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码) 服务, 而本地方法栈则是为虚拟机使用到的本地(Native)方法服务。
在这里插入图片描述

2. 特点

  1. 本地方法栈加载native的方法,native类方法存在的意义当然是填补java代码不方便实现的缺陷而提出的。
  2. 虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则是为虚拟机使用到的Native方法服务。
  3. 线程私有的,它的生命周期与线程相同,每个线程都有一个。

在Java虚拟机规范中,对本地方法栈这块区域,与Java虚拟机栈一样,规定了两种类型的异常:
(1)StackOverFlowError : 线程请求的栈深度>所允许的深度。
(2)OutOfMemoryError:本地方法栈扩展时无法申请到足够的内存。

3. 本地方法示例

Thread 类中本地方法示例:
在这里插入图片描述
在这里插入图片描述
System 类中本地方法示例:
在这里插入图片描述
在这里插入图片描述

以上是关于JVM 运行时内存空间详解——本地方法栈的主要内容,如果未能解决你的问题,请参考以下文章

JVM垃圾回收内部详解

JVM垃圾回收内部详解

JVM 内存区域总结:方法区+堆内存+本地方法栈+元空间——JVM系列

JVM 内存区域总结:方法区+堆内存+本地方法栈+元空间——JVM系列

JVM 内存区域总结:方法区+堆内存+本地方法栈+元空间——JVM系列

12.JDK1.8 JVM运行时数据区域概览各区域介绍程序计数器Java虚拟机栈本地方法栈堆堆空间内存分配(默认情况下)字符串常量池元数据区jvm参数配置