欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JVM读书笔记

程序员文章站 2022-10-23 10:13:30
1 概念 java virtual machine为java虚拟机,运行使用jdk中编译器编译的java程序。 2 JVM内存模型 程序计数器:线程私有 Java虚拟机栈:线程私有 本地方法栈:线程私有 堆:线程共享,存放对象 方法区:线程共享 3 类加载过程 检查方法区中常量池是否有即将创建的这个 ......

1 概念

java virtual machine为java虚拟机,运行使用jdk中编译器编译的java程序。

2 jvm内存模型

程序计数器:线程私有

java虚拟机栈:线程私有

本地方法栈:线程私有

堆:线程共享,存放对象

方法区:线程共享

3 类加载过程

检查方法区中常量池是否有即将创建的这个对象的所属类的符号引用

检查这个符号引用所代表的类是否已经被jvm加载 

如果类未被加载

加载类以及,直接与间接父类到方法区

静态成员加载:静态成员变量初始化,静态语句块的执行

非静态成员加载:非静态成员变量初始化,非静态语句块执行。

如果类已经被加载

根据方法区中类信息确定该类所需内存大小

从堆中划分一块对应大小的内存给新的对象

创建对象

为对象成员初始化

设置对象头信息

执行构造器进行初始化

延伸:

类显示加载

类隐示加载

 

4 老生代和新生代

 堆区分老生代和新生代

老生代:存放生命周期比较长的对象。gc经过多次垃圾回收没有被回收的对象或者大对象。

新生代:存放新生成的对象。