刚刚新建的对象在Eden中,一旦Eden满了,触发一次Minor GC,Eden中的存活对象就会被移动到Survivor区。这样继续循环下去,下一次Eden满了的时候,问题来了,此时进行Minor GC,Eden和Survivor各有一些存活对象,如果此时把Eden区的存活对象硬放到Survivor区,很明显这两部分对象所占有的内存是不连续的,也就导致了内存碎片化。
通过Outer.this,因为如果想实例化内部类对象,就必须通过外部类对象,当外部类对象new出内部类对象时,会把自己(外部类对象)的引用传到了内部类中,所以内部类就可以通过Outer.this来访问外部类的属性和方法,到这里,你也就可以知道为什么内部类可以访问外部类 的属性和方法,这里由于有两个相同的属性名称,所以需要显示的...
其实就是从根节点扫描,只要这个 Java对象在内存 Java对象在内存中的存储分3块区域 1、对象头(Header) 2、实例数据(Instance Data) 3、对齐填充(Padding)一、对象头哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳类型指针二、实例数据各种类型的字段(父类继承下来的、子类自身定义的)相同...