Native、方法区

本文详细介绍了Java中的Native方法及其作用,指出其通过JNI与C语言库交互。同时,讲解了Java内存区域中的本地方法栈(NativeMethodStack)和方法区(MethodArea)的功能。方法区存储类信息、静态变量和常量池,而本地方法栈则登记并执行native方法。文章还提及了程序计数器和对象加载过程,并讨论了与其他语言接口交互的现代方式。
摘要由CSDN通过智能技术生成

Native、方法区

重要!!

初入思考:

一个java类Thread既不是抽象类也不是接口,里面放着这个方法,不报错???

在这里插入图片描述因为带了native关键字

native关键字:

凡是带了它的方法,说明java的作用范围达不到了,会去调用c语言的库。

会进入本地方法栈,调用本地方法接口 JNI(java native interface)。

本地方法接口(JNI)的作用:就是扩展java方法的使用,融合不同的编程语言为java所用

历史背景:

java一开始想调用C,C++的程序,它在内存区域中专门开辟了一块标记区域:Native Method Stack, 登记 native 方法。在最终执行的时候,加载本地方法库中的方法通过JNI。

但是一般用不到,在连接硬件的时候会用到,例如java程序驱动打印机。

现在想调用其他接口(eg:python)的方式: Socket,WebService, http

image-20210814114436975

image-20210814114948341
总结:

Native Method Stack (本地方法栈)
他的具体做法是Native Method Stack 中登记native方法,在(Execution Engine)执行引擎的时候加载Native Libraies(本地库)

PC寄存器

程序计数器:Program Counter Register
每个线程都有一个程序计数器,是线程私有的,就是一个指针,只想方法去中的方法字节码(用来存储指向下一条指令的地址),在执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不计

方法区(Method Area方法区)

重要

方法区是所有线程共享的,所有字段和方法字节码,以及一些特殊方法 ,如构造函数,接口代码也在此定义,简单说:所有定义的方法的信息都保存在该区域,此区域属于共享区间

方法区存的东西:带有static、final、Class模板(加载器),常量池

常量池??

在这里插入图片描述

对象在加载的时候,在类加载的时候是什么样子的??

加载的区间,栈堆方法区
在这里插入图片描述

image-20210814121624654有一篇博客专门讲的Java对象在内存中实例化的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值