00:00
各位同学大家好,接下来带着大家进入到第11章,Java对象、内存布局和对象头。我相信Java程序员都知道什么是对象,大家都清楚Java一切皆对象,对吧?是一门面向对象的编程语言,那对象倒是说过很多了,祖宗类object,那object的头在哪呢?什么叫对象头?好,这是第一个问题,第二个这张知识涉及到Java虚拟机JVM相关的一些知识,要求大家。进一步深刻理解Java虚拟机,杨哥带着里面更多的吃透一些深的内容,那可能部部分同学会觉得奇怪,本门课程不是说的是guc Java并发多线程嘛,怎么会跟Java虚拟机又会扯上关系呢?首先啊两点,第一个学到后面大家会越来越清晰,但凡底层哈都是相通的,你要说清楚一个底层的问题,并发必然而然会迁到Java虚拟机,对象和内存布局,他们如何运转,如何展开工作。第二个请大家注意,我们讲这一章是因为跟后面的第12章synchize的。
01:04
这个关键字和所升级这个重要的面试题,和底层原理知识前后呼应,上下对照,可以这么讲,你要想把这章听懂,如果你不懂,对象投绝无可能。那么对于所升级。不加锁。也就是我们原来所说的五所。偏向锁轻量锁、重量锁size的如何从用户态到内核态它们之间的转换,每一次转换以后,结合上面的对象头对应标识的变化,如果这个搞不明白,我们是没有办法吃透第12章的。所以说我们先了解GVM相关的对象头理论知识,然后湿透第12章。好,那么接下来请跟着老师过来。第一个我们先从一些大厂的面试题谈一下来。Guc吧,说一下AQ的流程,后面会讲来GCGM同步锁,你看synchize GC啊,GVM啊,底层知识你逃不掉,自学不说了,S底层不说了,来,因为12~15大家或多或少都见识过,下面是16。
02:14
说到了对象头,问我对象头存储哪些信息,长度是多少位,存储好,那么可以看得出一外面是有考的,第二个我们来看一下,也就是我们常写的啊,你有一个object,谈谈你对这句话的理解。一般而言,假设JAVA8,按照默认的情况下,你有一个对象会占多少内存空间?也就是我们现在最经典的假设,你有了个book OK,或者说直接是一个object,那么大家告诉我它占多少?OK,对,内存里面会吃掉多少内存呢?那么是100还是1000,还是是兆还是KB等等,好,那么同学们。接下来。我们呢,要简单的来说一下对象头这个概念来。
03:02
首先。他的考核点如下。以前大家都会被问过一道题目,谈谈Java虚拟机,OK,那么所谓的GVM,那么我们都会被要求什么?比方说hip,这是一个堆内存对吧?那么如果一个堆内存大家都清楚以前啊考Java虚拟机的知识,那么呢,它考的一个东西仅仅是一个什么while就是在哪里。好,比如说我们利用一个对象,那么利用出来一个对象以后,主要是关心它的位置所在,在什么地方啊,那么同学们加va虚拟机里面的堆里面,那么他也会问你堆里面的什么地方啊,你可能在这儿啊,我们弟兄们都清楚第一个。新生代对吧,第二个养老带第三个。Space圆空间我相信大家都清楚,那么好,再具体一点,如果说是这个新生代的话,那么各位同学,它新生代里面又有哪些地方呢?那么是不是我们的伊甸园区,幸存者邻区,然后幸存者一区,没问题吧,这是考以前就是谈他,我们六一个对象以后再。
04:17
Java虚拟机里面的什么地方OK,好,注意现在他问了问题呢,变了,那么请问一个对象。有哪些构成呢?比如说你也清楚啊,你有了这么一个对象,这个是它的模板,在方法区,这个叫引用,在我们的账里面,等号右边这个整体叫实例,对象在堆里面,也就说我们回答了这个问题,那么下面变了这个题目。现在呢,加尔逊基它呢是what,也就说什么是这个对象的构成元素。有哪些?
05:00
OK,它的理论已经改变,考点已经发生变化,我们另一个object,另一个object的对象。来吧,说一下有哪些构成,那么这个东东有点类似于什么,我们以前呢,换了。构成就像一个人由什么构成,有一个头,一个身子和一个角,那么可以想一想,我们的HTM要豹纹,那什么叫HTM要豹纹呢?啊,同学们,虽然说大家都是做这个Java的,但是我相信啊,对于这样的代码,HTLL。OKHTML,那么这个是不是一个有小一段报文had对吧?那么我相信had大家呢都写过,然后这有个什么body,然后呢,这有个什么body OK。我相信各位同学这个没有任何问题吧,那么这个呢,就相当于一段HTML的报文,做一个显示表现层的一个最经典最简单的,对吧,你运行这个浏览器打开,可能你这写个hello word什么之类的,那说穿了我们现在的问题是,如果这么一个豹纹,它是有这么个构成,那么一个对象有什么构成呢?好比我们一个人,这个是头啊。
06:07
这个呢?是我们的身子中间这个十字架下面呢,是我们的脚,没问题吧,头体角那么一样,所以说呢,他就想问你的是它的构成布局有什么不一样,或者说现在你这个对象有什么构成,那么听好。对象拟出来的对象是在堆里面,那每一个对象它是怎么布局,它有什么构成呢?来,我们先来看看周志明老师Java虚拟机第三版权威定解,听好任何一个对象的内存的布局共有三部分构成。听好,在hot sport虚拟机里面,对象在堆内存的存储布局分为三部分,分别是对象头。实例数据和对齐填充,OK。在屏幕前的各位听众,各位同学,如不介意,可以暂停一下视频,写一下对象实例它的构成,就说我们另一个object的对象,它在这你了一个object的对象,它分别有对象头、实例数据和对齐填充三部分,给你摆平,OK,好,那么至于说这三部分是什么,我们后续再给大家详细介绍。
我来说两句