JVM入门学习笔记——上篇:内存与垃圾回收(1-2)

Oracle官网:https://www.oracle.com/cn/index.html
官网Java8的JVM规范文档:https://docs.oracle.com/javase/specs/jvms/se8/html/index.html
官网的Java规范文档:https://docs.oracle.com/javase/specs/index.html

1、JVM与Java体系结构

一、Java及JVM简介

Java生态圈

在这里插入图片描述

Java:跨平台的语言

在这里插入图片描述

JVM:跨语言的平台

在这里插入图片描述
在这里插入图片描述

字节码

在这里插入图片描述

多语言混合编程

在这里插入图片描述

二、Java发展的重大事件

在这里插入图片描述
在这里插入图片描述

Open JDK和Oracle JDK

在这里插入图片描述

三、虚拟机与Java虚拟机

虚拟机

在这里插入图片描述

Java虚拟机

在这里插入图片描述
在这里插入图片描述

JVM的位置

在这里插入图片描述
在这里插入图片描述

四、JVM的整体结构

在这里插入图片描述
详细图:
在这里插入图片描述

五、Java代码执行流程

在这里插入图片描述
在这里插入图片描述

六、JVM的架构模型

在这里插入图片描述
在这里插入图片描述

七、JVM的生命周期

在这里插入图片描述
在这里插入图片描述

八、JVM的发展历程

在这里插入图片描述
在这里插入图片描述

HotSpot虚拟机(默认)

在这里插入图片描述

JRockit虚拟机

在这里插入图片描述

J9虚拟机

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重点HotSpot虚拟机(默认虚拟机)、JRockit虚拟机、J9虚拟机。

2、类加载子系统

一、内存结构概述

简图

在这里插入图片描述

详细图

在这里插入图片描述
在这里插入图片描述

二、类加载器与类的加载过程

类加载器子系统的作用

在这里插入图片描述

类加载器ClassLoader角色

在这里插入图片描述

类的加载过程

在这里插入图片描述
在这里插入图片描述

1. 加载(Loading)

在这里插入图片描述
在这里插入图片描述

2. 链接(Linking)

在这里插入图片描述

3. 初始化(Initialization)

在这里插入图片描述
初始化时,对static代码而言,是按照顺序赋值的(如在静态代码块里对一个static变量进行赋值,静态代码块在static变量声明前,编译时,会先执行静态代码块里的代码进行赋值,然后再执行声明的代码进行赋值),并且生成clinit构造器方法。
如果声明的不是static变量,并且也没有静态代码块,则不会有clinit构造器方法。
每个类都会有一个构造器,对应init构造器方法。
初始化阶段会先调用super()方法执行父类的初始化。
类在初始化时,虚拟机会自动为这个类加锁,保证只加载一次,实现线程安全。
在这里插入图片描述

类加载的全过程:加载、验证、准备、解析、初始化。

三、类加载器分类

在这里插入图片描述
在这里插入图片描述

虚拟机自带的加载器

虚拟机自带的加载器:引导类加载器、扩展类加载器、系统类加载器。

引导类加载器

在这里插入图片描述

扩展类加载器

在这里插入图片描述

系统类加载器

在这里插入图片描述
父类加载器指的是由哪个加载器来加载自己这个加载器,就是这个加载器的父类加载器,并非继承关系。

用户自定义类加载器

在这里插入图片描述
在这里插入图片描述

四、ClassLoader

在这里插入图片描述
在这里插入图片描述

获取ClassLoader的途径

在这里插入图片描述

五、双亲委派机制

在这里插入图片描述
在这里插入图片描述
加载类时,否则加载的类加载器会把加载请求向上委托给父类加载器,父类加载器如果有父类加载器,就会再把加载请求向上委托,直到引导类加载器。
引导类加载器如果加载的路径有被加载类,就会进行加载,否则把加载请求向下返还,扩展类加载器如果路径有被加载的类,就进行加载,否则继续向下返还,然后所有的父类加载器都不能进行加载,就由原先的类加载器完成类的加载。
先把加载请求传到引导类加载器,然后依次向下进行加载,如果能加载,则完成类的加载,其他的类加载器不会加载;如果不能加载,向下返还,直到原先的类加载器。
在这里插入图片描述

沙箱安全机制

在这里插入图片描述

六、其他

在这里插入图片描述

对类加载器的引用

在这里插入图片描述

类的主动使用和被动使用

在这里插入图片描述
在这里插入图片描述

下一篇笔记:JVM入门学习笔记——上篇:内存与垃圾回收(3-7)

学习视频(p1-p38):https://www.bilibili.com/video/BV1PJ411n7xZ?p=1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值