1 概念
java virtual machine为java虚拟机,运行使用jdk中编译器编译的java程序。
2 jvm内存模型
程序计数器:线程私有
java虚拟机栈:线程私有
本地方法栈:线程私有
堆:线程共享,存放对象
方法区:线程共享
3 类加载过程
检查方法区中常量池是否有即将创建的这个对象的所属类的符号引用
检查这个符号引用所代表的类是否已经被jvm加载
如果类未被加载
加载类以及,直接与间接父类到方法区
静态成员加载:静态成员变量初始化,静态语句块的执行
非静态成员加载:非静态成员变量初始化,非静态语句块执行。
如果类已经被加载
根据方法区中类信息确定该类所需内存大小
从堆中划分一块对应大小的内存给新的对象
创建对象
为对象成员初始化
设置对象头信息
执行构造器进行初始化
延伸:
类显示加载
类隐示加载
4 老生代和新生代
堆区分老生代和新生代
老生代:存放生命周期比较长的对象。gc经过多次垃圾回收没有被回收的对象或者大对象。
新生代:存放新生成的对象。
如对本文有疑问, 点击进行留言回复!!
unity的错误解决办法:NullReferenceException: Object reference not set to an instance of an object;tiny proje
Hadoop 之 HDFS (HDFS 数据流的 读写 流程)
听说你一读Spring源码就懵逼?我帮你把架子搭好了,你填就行!
首席架构师推荐:金融保险领域数字化转型实践--如何优雅地修改业务中台中分层应用Maven多模块的版本号?(命令导入式)
[JVM学习之路]一、初识JVM,了解其结构、模型及生命周期
网友评论