JVM初探 (二):Native、PC寄存器、三种JVM

一、Native

Native 一般是指本地的,在Java 源码中如果看到某个方法被Native修饰,那就是代表只能调用底层C 语言处理逻辑。

编写一个多线程启动类

public static void main(String[] args) {
    new Thread(() -> {},"Thread1").start();
}

点进去start方法

public synchronized void start() {

    if (threadStatus != 0)
        throw new IllegalThreadStateException();

    group.add(this);

    boolean started = false;
    try {
        start0(); // 调用了start0()方法
        started = true;
    } finally {
        try {
            if (!started) {
                group.threadStartFailed(this);
            }
        } catch (Throwable ignore) {

        }
    }
}
// 凡是带了native关键字的,就说明Java的作用范围达不到了,会去调用底层C语言的库
private native void start0(); //start0()方法的定义,这个方法会调用底层C

Java在内存区域中专门开辟了一块标记区域——本地方法栈,用来登记native方法,凡是带了native关键字的,会进入到本地方法栈中,调用本地方法接口(JNI),在最终执行的时候,加载本地方法库中的方法通过JNI

在这里插入图片描述

  • JNI的作用:扩展Java的使用,融合不同的编程语言为Java所用,不过最初是想融合C,C++的,因为Java诞生的时候,C,C++横行,想要立足的话就要有能调用C的程序
  • 本地方法栈:具体做法是,在Native Method Stack中登记native方法,在执行引擎执行的时候加载Native Libraies【本地库】
二、PC寄存器

程序计数器:Program Counter Register

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

三种JVM
  • Sun公司 HotSpot Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
  • BEA JRockit
  • IBM J9VM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真香号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值