第 7 章 本地方法栈

1、本地方法栈

本地方法栈的特点

  1. Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用

  2. 本地方法栈,也是线程私有的。

  3. 允许被实现成固定或者是可动态扩展的内存大小(在内存溢出方面和虚拟机栈相同)

    • 如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。
    • 如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么Java虚拟机将会抛出一个outofMemoryError异常。
  4. 本地方法一般是使用C语言实现的。

  5. 它的具体做法是Native Method Stack中登记native方法,在Execution Engine 执行时加载本地方法库。

注意事项

  1. 当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界。它和虚拟机拥有同样的权限。

    • 本地方法可以通过本地方法接口来访问虚拟机内部的运行时数据区
    • 它甚至可以直接使用本地处理器中的寄存器
    • 直接从本地内存的堆中分配任意数量的内存
  2. 并不是所有的JVM都支持本地方法。因为Java虚拟机规范并没有明确要求本地方法栈的使用语言、具体实现方式、数据结构等。如果JVM产品不打算支持native方法,也可以无需实现本地方法栈。

  3. 在Hotspot JVM中,直接将本地方法栈和虚拟机栈合二为一。

第 7 章 本地方法栈相关推荐

  1. 本地方法接口和本地方法栈

    本地方法接口 什么是本地方法? 一个Native Method就是一个Java调用非Java代码的接口.一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C. ...

  2. JVM---本地方法接口和本地方法栈

    本地方法接口 什么是本地方法? 简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗.一个 Native Method 是这样一个 Java 方法:该方法的实现由 ...

  3. JVM - 结合代码示例彻底搞懂Java内存区域_线程栈 | 本地方法栈 | 程序计数器

    文章目录 Pre 运行时数据区总览 线程栈 概要 栈内部主要组成部分 局部变量 操作数栈 动态链接 方法出口 小结 程序计数器 本地方法栈 附 测试demo javap JVM字节码指令集手册 Pre ...

  4. JVM_03 运行时数据区 [ 程序计数器+本地方法栈 ]

    一. 程序计数器 ①. 作用,是用来存储指向下一条指令的地址,也即将要执行的指令代码.由执行引擎读取下一条指令 ②. 特点:①. 是线程私有的 ②. 不会存在内存溢出 ③. 注意:在物理上实现程序计数 ...

  5. 从几个sample来学习Java堆,方法区,Java栈和本地方法栈

    2019独角兽企业重金招聘Python工程师标准>>> 最近在看<深入理解Java虚拟机>,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程 ...

  6. JVM【带着问题去学习 02】数据结构栈+本地方法栈+虚拟机栈+JVM栈运行原理

    1.数据结构栈 栈是一种比较简单的数据结构,后进先出.栈本身是一个线性表,但是这个表中只有一端允许数据的进出.栈的常用操作包括入栈push和出栈pop,对应于数据的压入和弹出.由于栈后进先出的特性,常 ...

  7. 46栈内存溢出、内存区域(程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区、直接内存、内存溢出)与内存溢出(对象实例化分析)

    46.什么情况下会发生栈内存溢出 46.1.Java 内存区域与内存溢出 46.1.1.内存区域 46.1.1.1.程序计数器 46.1.1.2.Java 虚拟机栈 46.1.1.3.本地方法栈 46 ...

  8. 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 ...

  9. 11.JDK8内存模型、本地方法栈、虚拟机栈、栈帧结构(局部变量表、操作数栈、方法出口、虚拟机栈与本地方法栈的关系、寄存器、方法区、堆(Heap)、jvm中的常量池、Metaspace(元空间))

    11.JDK8内存模型 11.1.本地方法栈(Native Method Stacks) 11.2.虚拟机栈(Java Virtual Machine Stacks) 11.3.栈帧结构 11.3.1 ...

最新文章

  1. 手把手教你研发自己的智能无人机 谢谢您呀!
  2. 关于Spring Cloud 框架热部署的方法
  3. 如何更改微调器的文字大小和文字颜色?
  4. Elasticsearch的Shield插件
  5. 神策数据张涛:如何让用户标签价值落地?
  6. 浅谈二次元场景特征和绘制手法
  7. UtilSession failed: Prerequisite check CheckSystemSpace space(22288172004) is not availa
  8. pymysql模块的使用
  9. C# vs MySql
  10. 实验任务四:实现登陆界面
  11. 如何用弹出窗口显示进度 - 回复 嘿嘿嘿 的问题
  12. MIUI 12稳定版系统中的开发者选项限制解除
  13. 解决vs2008安装问题 Office 2007 Microsoft Visual Studio Web 创作组件 安装失败
  14. 搭建个人网站需要的三个步骤
  15. 瑞星卡卡升级出现错误:kmon.dll.zip,错误代码:0x0/0x0(chech)
  16. Ubuntu 安装 postgresql12
  17. opencv java 车牌定位_用opencv实现在图像找到车牌号并检测出车牌号
  18. 互联网与达尔文进化论的结合
  19. 平行四边形法则的感悟
  20. 实例演示Nginx重写(Rewrite)类型last、break、redirect和permanent的区别

热门文章

  1. android 字体px转sp,Android中px,dp,sp区别及换算
  2. 第7章 随机扭动的曲线(《Python趣味创意编程》教学视频)
  3. 使用STAR方法完善简历
  4. 传统接口写法与Restful API 区别
  5. php模拟登录京东,京东jos 获取授权及php-sdk的使用示例
  6. Python菜鸟入门:day09数据结构
  7. 三面阿里竟然败在了 volatile 关键字上
  8. 壁仞科技A轮融资11亿元, 创近年芯片设计领域新纪录
  9. 陆奇、雷军、熊晓鸽聊疫情后的创业风口
  10. 阿里云自研数据仓库 AnalyticDB 再捧 TPC 全球冠军