第 7 章 本地方法栈
第 7 章 本地方法栈
1、本地方法栈
本地方法栈的特点
Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。
本地方法栈,也是线程私有的。
允许被实现成固定或者是可动态扩展的内存大小(在内存溢出方面和虚拟机栈相同)
- 如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。
- 如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么Java虚拟机将会抛出一个outofMemoryError异常。
本地方法一般是使用C语言实现的。
它的具体做法是Native Method Stack中登记native方法,在Execution Engine 执行时加载本地方法库。
注意事项
当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界。它和虚拟机拥有同样的权限。
- 本地方法可以通过本地方法接口来访问虚拟机内部的运行时数据区
- 它甚至可以直接使用本地处理器中的寄存器
- 直接从本地内存的堆中分配任意数量的内存
并不是所有的JVM都支持本地方法。因为Java虚拟机规范并没有明确要求本地方法栈的使用语言、具体实现方式、数据结构等。如果JVM产品不打算支持native方法,也可以无需实现本地方法栈。
在Hotspot JVM中,直接将本地方法栈和虚拟机栈合二为一。
第 7 章 本地方法栈相关推荐
- 本地方法接口和本地方法栈
本地方法接口 什么是本地方法? 一个Native Method就是一个Java调用非Java代码的接口.一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C. ...
- JVM---本地方法接口和本地方法栈
本地方法接口 什么是本地方法? 简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗.一个 Native Method 是这样一个 Java 方法:该方法的实现由 ...
- JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器
文章目录 Pre 运行时数据区总览 线程栈 概要 栈内部主要组成部分 局部变量 操作数栈 动态链接 方法出口 小结 程序计数器 本地方法栈 附 测试demo javap JVM字节码指令集手册 Pre ...
- JVM_03 运行时数据区 [ 程序计数器+本地方法栈 ]
一. 程序计数器 ①. 作用,是用来存储指向下一条指令的地址,也即将要执行的指令代码.由执行引擎读取下一条指令 ②. 特点:①. 是线程私有的 ②. 不会存在内存溢出 ③. 注意:在物理上实现程序计数 ...
- 从几个sample来学习Java堆,方法区,Java栈和本地方法栈
2019独角兽企业重金招聘Python工程师标准>>> 最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程 ...
- JVM【带着问题去学习 02】数据结构栈+本地方法栈+虚拟机栈+JVM栈运行原理
1.数据结构栈 栈是一种比较简单的数据结构,后进先出.栈本身是一个线性表,但是这个表中只有一端允许数据的进出.栈的常用操作包括入栈push和出栈pop,对应于数据的压入和弹出.由于栈后进先出的特性,常 ...
- 46栈内存溢出、内存区域(程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区、直接内存、内存溢出)与内存溢出(对象实例化分析)
46.什么情况下会发生栈内存溢出 46.1.Java 内存区域与内存溢出 46.1.1.内存区域 46.1.1.1.程序计数器 46.1.1.2.Java 虚拟机栈 46.1.1.3.本地方法栈 46 ...
- 12.JDK1.8 JVM运行时数据区域概览、各区域介绍、程序计数器、Java虚拟机栈、本地方法栈、堆、堆空间内存分配(默认情况下)、字符串常量池、元数据区、jvm参数配置
12.JDK1.8 JVM运行时数据区域概览 12.1.JDK1.8 JVM运行时数据区域概览 12.2.各区域介绍 12.3.各区域介绍 12.3.1.程序计数器 12.3.2.Java虚拟机栈 1 ...
- 11.JDK8内存模型、本地方法栈、虚拟机栈、栈帧结构(局部变量表、操作数栈、方法出口、虚拟机栈与本地方法栈的关系、寄存器、方法区、堆(Heap)、jvm中的常量池、Metaspace(元空间))
11.JDK8内存模型 11.1.本地方法栈(Native Method Stacks) 11.2.虚拟机栈(Java Virtual Machine Stacks) 11.3.栈帧结构 11.3.1 ...
最新文章
- 手把手教你研发自己的智能无人机 谢谢您呀!
- 关于Spring Cloud 框架热部署的方法
- 如何更改微调器的文字大小和文字颜色?
- Elasticsearch的Shield插件
- 神策数据张涛:如何让用户标签价值落地?
- 浅谈二次元场景特征和绘制手法
- UtilSession failed: Prerequisite check CheckSystemSpace space(22288172004) is not availa
- pymysql模块的使用
- C# vs MySql
- 实验任务四:实现登陆界面
- 如何用弹出窗口显示进度 - 回复 嘿嘿嘿 的问题
- MIUI 12稳定版系统中的开发者选项限制解除
- 解决vs2008安装问题 Office 2007 Microsoft Visual Studio Web 创作组件 安装失败
- 搭建个人网站需要的三个步骤
- 瑞星卡卡升级出现错误:kmon.dll.zip,错误代码:0x0/0x0(chech)
- Ubuntu 安装 postgresql12
- opencv java 车牌定位_用opencv实现在图像找到车牌号并检测出车牌号
- 互联网与达尔文进化论的结合
- 平行四边形法则的感悟
- 实例演示Nginx重写(Rewrite)类型last、break、redirect和permanent的区别