小李的便利店

悠优酸幽

JVM知识点(一)

JVM虚拟机知识专题,会持续更新。

运行时数据区

《JVM知识点(一)》

JVM用来存储加载的类信息、常量、静态变量、编译后的代码等数据虚拟机规范中这是一个逻辑区划。具体实现根据不同虚拟机来实现。

如:oracle的HotSpot在java7中方法区放在永久代,Java8放在元数据空间,且通过GC机制对这个区域进行管理。

类生命周期

从加载到初始化

1、加载

读取二进制内容

2、验证

验证class文件格式规范、语义分析、引用验证、字节码验证

3、准备

分配内存、设置类static修饰的变量初始值

4、解析

类、接口、字段、类方法等解析

5、初始化

为静态变量赋值;执行静态代码块

6、使用

创建实例对象

7、卸载

从JVM方法区中卸载

类加载器

类加载器负责装入类,搜索网络、jar、zip、文件夹、二进制数据、内存等指定位置的类资源。一个java程序运行,最少有三个类加载器实例,负责不同类的加载。

《JVM知识点(一)》
《JVM知识点(一)》

JVM如何知道我们类在何方

《JVM知识点(一)》

使用命令:jps、jcmd

jcmd 6620 VM.system_properties
《JVM知识点(一)》

类不会重复加载

类的唯一性:同一个类加载器,类名一样,代表是用一个类

识别方式:ClassLoader Instance id + PackageName + ClassName

验证方式:使用类加载器,对同一个class类的不同版本,进行多次加载,检查是否会加载最新的代码。

类的卸载

类什么时候会被卸载?

满足如下两个条件:

1、该Class所有的实例都已经被GC;

2、加载该类的ClassLoader实例已经被GC;

验证方式:jvm启动中增加 -verbose:class参数,输出类加载和卸载的日志信息。

双亲委派模型

《JVM知识点(一)》
俗称:败家子模型
点赞

发表评论

电子邮件地址不会被公开。