01-JVM

116 阅读2分钟

JVM (Java Virtual Machine) 概述 JVM 可以分为5大部分:

类加载器(Class Loader) 加载字节码文件到内存 运行时数据区(Runtime Data Area) JVM核心内存空间的结构模型 包括方法区、虚拟机栈、本地方法栈、堆、程序计数器 执行引擎(Execution Engine) 对 JVM 指令进行解析,翻译成机器码,提交给操作系统 本地库接口(Native Interface) 供 Java 调用的融合了不同开发语言的原始库 本地方法库(Native Libraies) Java 本地方法的具体实现

运行时数据区

方法区 存储加载的类信息、常量、静态变量,方法区是一种规范,永久代是方法区的一种实现,元空间也是方法区的一种实现,Java8 以后用元空间替换永久代(永久代和元空间都是 JVM 内存中的一块区域) 本地方法栈

本地方法:Java 属于基于应用层的高级编程语言,无法访问底层操作系统,就需要使用其他语言来实现,比如 C++

本地方法的使用原理:

在 Java 程序中声明 native 修饰的方法,只有方法定义,没有方法实现,将 Java 文件编译成字节码文件 用 javah 命令编字节码文件,生成一个 .h 文件 编写一个 C++ (.cpp)文件,实现 .h 文件中的方法 将 .cpp 文件编译成动态链接库文件 .dll 使用 System.loadLibrary() 加载动态链接库文件 .dll

常见的本地方法: getClass() //获取运行时类 hashCode() //获取对象的哈希值 wait() //让正在访问当前资源的线程暂停

作者:秃头小胖子 链接:juejin.cn/post/695428… 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。