没有合适的资源?快使用搜索试试~ 我知道了~
首页《JVM从入门到入魔》笔记.pdf
《JVM从入门到入魔》笔记.pdf
需积分: 10 162 浏览量
更新于2023-05-30
评论
收藏 4.13MB PDF 举报
这份资料经历了漫长的坎坷道路,如果你对JAVA感兴趣,并且对它背后的故事感兴趣,那么这份资料可以帮你进阶到更高的层次,达到入魔封神的境界,学海无涯苦作舟,路过的童鞋有福了。
资源详情
资源评论
资源推荐

01 优秀的Java开发者
大家都是有经验的Java开发人员,想想为何要学习JVM?[面试?调优?装逼?]
不管出于何种原因,总之你得先学好。那怎么学好呢?
因为目前课堂中有大学生和工作几年的,也就是每个人对于JVM的了解可能不一样,这就要考虑到怎么
切入
既然大家都学习过Java,那不妨就从Java开始聊起,同时也是扫盲,毕竟不是每个小伙伴都是计算机专
业
1.1 什么是Java?
Java是一门面向对象的高级编程语言
1.2 编程语言
编程语言(英语:programming language),是用来定义[计算机程序]的[形式语言]。它是一种被[标
准化]的交流技巧,用来向[计算机]发出指令。一种能够让[程序员]准确地定义计算机所需要使用数据的
计算机语言,并精确地定义在不同情况下所应当采取的行动。
说白了就是让人类能够和计算机沟通,所以要学习计算机能够懂的语言
1.3 计算机[硬件]能够懂的语言
1.3.1 计算机发展史
1946-1958:电子管计算机
1958-1964:晶体管计算机
1964-1970:集成电路计算机
1970-至今:大规模集成电路计算机
猜想:未来以蛋白质分子作为原材料,量子计算机[已经有了]
1.3.2 计算机体系结构
遵循冯诺依曼计算机结构
1.3.3 计算机处理数据过程
咕泡学院 只为更好的你

(1)提取阶段:由输入设备把原始数据或信息输入给计算机存储器存起来
(2)解码阶段:根据CPU的指令集架构(ISA)定义将数值解译为指令
(3)执行阶段:再由控制器把需要处理或计算的数据调入运算器
(4)最终阶段:由输出设备把最后运算结果输出
本质上就是CPU取数据指令然后返回
CPU=存储器+运算器+控制器
1.3.4 机器语言
我们把CPU能够直接认识的数据指令,称为机器语言,也就是010101001这种形式
1.3.5 不同厂商的CPU
单核、双核、多核
Intel、AMD、IBM等
不同CPU使用的CPU指令集是不一样的,这就会有不兼容的问题
而且要是直接操作01这种形式的,非常麻烦并且容易出错,硬件资源管理起来也不方便
1.3.6 操作系统
向下对接指令系统、管理硬件资源
向上提供给用户简单的操作命令和界面
1.3.7 汇编语言
低级语言,通过汇编器翻译成机器语言
MOV、PUSH、ADD等
对机器友好,执行效率比较高,移植性差
但是人类操作起来还是不太方便,或者需要专业的人员
1.3.8 高级语言
C、C++、Java、Python、Golang等
最终肯定还是要转换成机器能够懂的机器语言
1.3.9 编译型和解释型
1.3.9.1 编译型
使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成
可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
C、C++、GoLang
编译型语言:
执行速度快、效率高;依靠编译器、跨平台性差些。
把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。
咕泡学院 只为更好的你

1.3.9.2 解释型
使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。
是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。
Python、Javascript
1.3.9.3 Java呢?
Java属于编译型+解释型的高级语言
1.4 So JVM是什么?
Java Virtual Machine(Java虚拟机)
Write Once Run Anywhere
1.5 JDK JRE JVM
Java官网 :https://docs.oracle.com/javase/8/
Reference -> Developer Guides -> 定位到:https://docs.oracle.com/javase/8/docs/index.html
解释型语言:
执行速度慢、效率低;依靠解释器、跨平台性好。
把做好的源程序翻译一句,然后执行一句,直至结束。
其实并不是因为有javac将Java源码编译成class文件,才说Java属于编译+解释语言,因为在这个编译器编
译之后,生成的类文件不能直接在对应的平台上运行。
那为何又说Java是编译+解释语言呢?因为class文件最终是通过JVM来翻译才能在对应的平台上运行,而这
个翻译大多数时候是解释的过程,但是也会有编译,称之为运行时编译,即JIT(Just In Time)。
综上所述,Java是一门编译型+解释型的高级语言。
咕泡学院 只为更好的你

02 JVM到底该学习什么
或者换句话说,JVM到底从哪边开始学习起?
2.1 源码到类文件
2.1.1 源码demo
JDK 8 is a superset of JRE 8, and contains everything that is in JRE 8, plus
tools such as the compilers and debuggers necessary for developing applets and
applications. JRE 8 provides the libraries, the Java Virtual Machine (JVM), and
other components to run applets and applications written in the Java programming
language. Note that the JRE includes components not required by the Java SE
specification, including both standard and non-standard Java components.
(1)源码到类文件
(2)类文件到JVM
(3)JVM各种折腾[内部结构、执行方式、垃圾回收、本地调用等]
咕泡学院 只为更好的你

编译: javac -g:vars Person.java ---> Person.class
2.1.2 前期编译
Person.java -> 词法分析器 -> tokens流 -> 语法分析器 -> 语法树/抽象语法树
-> 语义分析器 -> 注解抽象语法树 -> 字节码生成器 -> Person.class文件
2.1.3 类文件(Class文件)
2.1.3.1 16进制
2.1.3.2 The ClassFile Structure
官网 : https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html
class Person{
private String name="Jack";
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);
}
}
cafe babe 0000 0034 003f 0a00 0a00 2b08
002c 0900 0d00 2d06 4059 0000 0000 0000
0900 0d00 2e09 002f 0030 0800 310a 0032
0033 0700 340a 000d 0035 0900 0d00 3607
0037 0100 046e 616d 6501 0012 4c6a 6176
612f 6c61 6e67 2f53 7472 696e 673b 0100
0361 6765 0100 0149 0100 0673 616c 6172
7901 0001 4401 000d 436f 6e73 7461 6e74
......
ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
u2 access_flags;
u2 this_class;
u2 super_class;
咕泡学院 只为更好的你
剩余62页未读,继续阅读

















qq_27439739
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- Xilinx SRIO详解.pptx
- Informatica PowerCenter 10.2 for Centos7.6安装配置说明.pdf
- 现代无线系统射频电路实用设计卷II 英文版.pdf
- 电子产品可靠性设计 自己讲课用的PPT,包括设计方案的可靠性选择,元器件的选择与使用,降额设计,热设计,余度设计,参数优化设计 和 失效分析等
- MPC5744P-DEV-KIT-REVE-QSG.pdf
- 通信原理课程设计报告(ASK FSK PSK Matlab仿真--数字调制技术的仿真实现及性能研究)
- ORIGIN7.0使用说明
- 在VMware Player 3.1.3下安装Redhat Linux详尽步骤
- python学生信息管理系统实现代码
- 西门子MES手册 13 OpcenterEXCR_PortalStudio1_81RB1.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0