刚刚新建的对象在Eden中,一旦Eden满了,触发一次Minor GC,Eden中的存活对象就会被移动到Survivor区。这样继续循环下去,下一次Eden满了的时候,问题来了,此时进行Minor GC,Eden和Survivor各有一些存活对象,如果此时把Eden区的存活对象硬放到Survivor区,很明显这两部分对象所占有的内存是不连续的,也就导致了内存碎片化。
1、对象头(Header) 2、实例数据(Instance Data) 3、对齐填充(Padding)一、对象头哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳类型指针二、 中是怎样表示的呢?这一行代码实际产生了两个东西:一个是p变量,一个是Person对象,它在内存中的表示如下图。 如果希望通知垃圾回收机制回收某个...
通过Outer.this,因为如果想实例化内部类对象,就必须通过外部类对象,当外部类对象new出内部类对象时,会把自己(外部类对象)的引用传到了内部类中,所以内部类就可以通过Outer.this来访问外部类的属性和方法,到这里,你也就可以知道为什么内部类可以访问外部类 的属性和方法,这里由于有两个相同的属性名称,所以需要显示的...
简单类对象的实例化过程(JVM内存解析) 二、子类对象的实例化过程(JVM内存解析) 三、String对象不同的创建方式 四、对象实例化在编译时类型和运行时类型问题 五、多态性本质 六、子类继承父类注意点 一、简单类对象的实例化过程(JVM内存解析) 1、普通无继承类的对象实例化过程 (1)在方法区加载需要实例化对象的...
1. 内部类很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了1.1 内部类概述内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。内部类不是在一个java源文件中编写俩个平行的俩个...