JVM读书笔记

2018-11-13 07:34:18来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

1 概念

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

2 JVM内存模型

程序计数器:线程私有。当前线程正在执行的行号指示器。

Java虚拟机栈:线程私有。即将运行的java方法创建的区域。

本地方法栈:线程私有。即将运行的本地方法创建的区域。

堆:线程共享,存放对象。

方法区:线程共享。存放加载的,类、常量、静态变量、即时编译器编译后的代码。

线程私有:生命周期和所属线程一样。

线程共享:jvm启动时创建,停止时销毁时

3 类加载过程

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

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

如果类未被加载

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

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

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

如果类已经被加载

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

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

创建对象

为对象成员初始化

设置对象头信息

执行构造器进行初始化

延伸:

类显示加载

类隐示加载

 

4 老生代和新生代

 堆区分老生代和新生代

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

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

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:转换类型 totypeString

下一篇:JavaBean对象与Map对象互相转化