码迷,mamicode.com
首页 > 其他好文 > 详细

JVM虚拟机个人理解

时间:2019-04-25 21:23:51      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:==   版本   原因   创建   分配   静态成员变量   初始   构造   加载完成   

针对于java1.8版本,JVM的系统架构

 

技术图片

类加载机制:

 

技术图片

 

堆内存结构图:

技术图片

 

面试题:一个对象从创建到销毁经历了什么?

 

 

1、new一个对象时,在堆内存中开辟一块空间。

2、给开辟的空间分配一个地址。

3、把对象的所有非静态成员加载到所开辟的空间下。

4、所有的非静态成员加载完成之后,对所有非静态成员变量进行默认初始化。

5、所有非静态成员变量默认初始化完成之后,调用构造函数。

6、在构造函数入栈执行时,分为两部分:先执行构造函数中的隐式三步,

        ====①执行super()语句   ②对开辟空间下的所有非静态成员变量进行显示初始化  ③执行构造代码块====

再执行构造函数中书写的代码。

7、在整个构造函数执行完并弹栈后,把空间分配的地址赋给引用对象。

注:  super语句,可能出现以下三种情况:

1)构造方法体的第一行是this()语句,则不会执行隐式三步,而是调用this()语句所对应的的构造方法,最终肯定会有第一行不是this语句的构造方法。

2)构造方法体的第一行是super()语句,则调用相应的父类的构造方法, 

3)构造方法体的第一行既不是this()语句也不是super()语句,则隐式调用super(),即其父类的默认构造方法,这也是为什么一个父类通常要提供默认构造方法的原因。

 

JVM虚拟机个人理解

标签:==   版本   原因   创建   分配   静态成员变量   初始   构造   加载完成   

原文地址:https://www.cnblogs.com/xiongmozhou/p/10771036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!