1.了解冯诺依曼计算机结构
1.1计算机处理数据过程
(1)提取阶段:由输入设备把原始数据或信息输入给计算机存储器存起来
(2)解码阶段:根据CPU的指令集架构(ISA)定义将数值解译为指令
(3)执行阶段:再由控制器把需要处理或计算的数据调入运算器
(4)最终阶段:由输出设备把最后运算结果输出
本质上就是CPU取数据指令然后返回
CPU=存储器+运算器+控制器
2.JVM Java Virtual Machine(Java虚拟机)
Java官网 :Home: Java Platform, Standard Edition (Java SE) 8 Release 8
Reference - > Developer Guides - > 定位到:https://docs.oracle.com/javase/8/docs/index.html
3. JVM到底该学习什么
(1)源码到类文件
(2)类文件到JVM
(3)JVM各种折腾[内部结构、执行方式、垃圾回收、本地调用等]
3.1创建一个类进行编译
package com.example.jvmcase.basic;
class Person {
private String name = "yzt";
private int age;
private final double salary = 100;
private static String address;
private final static String hobby = "Programming"; private static Object obj = new Object();
public void say() {
System.out.println("person say...");
}public static int calc(int op1, int op2) {
op1 = 3;
int result = op1 + op2;
Object obj = new Object();
return result;
}
public static void main(String[] args) {
calc(1, 2);
3.2执行编译命令
javac -g:vars Person.java --- > Person.class
3.3编译过程
Person.java - > 词法分析器 - > tokens流 - > 语法分析器 - > 语法树/抽象语法树
- > 语义分析器 - > 注解抽象语法树 - > 字节码生成器 - > Person.class文件
4. 类文件到虚拟机(类加载机制)
类加载机制是指我们将类的字节码文件所包含的数据读入内存,同时我们会生成数据的访问入口的一 种
特殊机制。那么我们可以得知,类加载的最终产品是数据访问入口。
这个时候,看到这张图,我们应该有一个问题,那就是我们的字节码加载的方式,也就是我们的字节 码文件可以用什么方式进行加载呢?
4.1加载.class文件的方式
4.1.1从本地系统中直接加载
4.1.2通过网络下载.class文件
典型