@joshsulin
2018-08-12T02:55:40.000000Z
字数 808
阅读 597
JVM底层奥秘ClassLoader
JVM我们不深入讲解, 大家都知道如果要真讲JVM的话, 是非常多的,比如JVM内存模型、运行时区域、数据区、堆栈结构、以及GC都是重点的一些内容。
实际运行的是一堆class文件, 也叫二进制字节码文件。
这个时候ClassLoader就登场了, ClassLoader在JVM类加载器中充当一个重要的角色。
在说类加载器之前, 首先要说一下JVM的运行流程, 必须要懂这个流程, 才能真正的往后面走。
- 1、开发Java程序首先要开发什么? -> java源程序
- 2、通过编译->将java源程序编译成java class文件(字节码)。-> 通过javac
- 3、接着JVM就登场了, JVM虚拟机会把我们的class文件加载, 加载需要路径, 加载到内存中, 最终保存到堆里面, 我们这里讲解的是运行流程, 怎么执行呢? java其实有一个特性(跨平台), 一次编写、到处运行。window平台、linux平台、other平台, 是不是有一种机制将它解释成不同平台下面的指令。这时就有了不同平台下面的JVM。真正的跨平台就是JVM针对不同的平台有不同的实现。大家有兴趣可以分别去下载window下面的jdk, linux下面的jdk, 它们肯定是不同的, 最主要的不同就是封装了跨平台的一些特性, 跨平台的一些库。JVM会把我们字节码文件解释成操作系统、硬件平台支持的指令。然后成为本地的机器指令, 这样就达到了跨平台。
类加载器, 执行引擎, 运行时数据区, 本地接口
Class文件 -> ClassLoader -> 运行时数据区 -> 执行引擎 -> 本地方法(本地库接口) -> 本地方法库.
