栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

JVM中Native理解以及对方法区的一些简单理解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM中Native理解以及对方法区的一些简单理解

1、native关键字的理解

  我们先来看一段代码:

public class Native {
    public static void main(String[] args) {
        new Thread(()->{

        },"my Thread").start();
    }
    private native void start0();

}

  我们发现在这个类里面定义了一个方法:private native void start0();,这个方法就和在接口和抽象类里面定义方法一样,是没有方法体的,但是能在类里面定义,原因是加了一个native关键字,如果去掉该关键字的话,该方法就会报错。

  那么这个方法的含义是什么呢?凡是带了native关键字的方法,说明代码想要实现的功能java以及实现不了了(比如调用打印机,因为java不是能和硬件交互的语言),java的作用范围达不到,然后会去调用底层c语言的库实现我们想要完成的但仅仅靠java完成不了的功能。

  调用流程流程如下:

  1. 用native修饰的方法会进入本地方法栈
  2. 然后在本地方法栈中调用本地方法接口,即JNI去加载本地方法库中的c语言等第三方库。
  3. 第三方库执行相应的方法实现相应的功能。

  JNI的作用:扩展Java的使用,融合不同编程语言为Java所用!最初的时候,本地方法库中只有c/c++的库,因为Java诞生的时候,c和c++横行,想要立足的话,必须能够调用c和c++的程序。现在我们可以通过自定义JNI来实现调用其他语言。

  JVM在内存区域中专门开辟了一块标记native方法的区域:Native Method Stack,用来登记native方法。

  在最终执行的时候,加载本地方法库中的方法通过JNI。

2、方法区一些简单理解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/882998.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号