1. 销毁对象在java中怎么用
//a,b引用对象
Object a = new Object();
Object b = a;
//撤销a引用
a=null;
//撤销b引用
b=null;
//没有了所有引用了~那么new 开辟的内存空间会被gc内存回内收器在稍后随机时段回收掉容。
2. Java GC详解 - 1. 最全面的理解Java对象结构 - 对象指针 OOPs
Java 对象结构中的对象指针 OOPs详解如下:
1. OOPs 的组成 OOPs 是对象头的主要组成部分,包括标记字和类型字。 标记字:大小为 8 字节,包含对象的状态信息,如哈希值、对象形状、锁信息和数组长度等。 类型字:指向对象所属类的指针,Java 7 之前位于持久带,Java 8 及以后位于元数据区。
2. 标记字的具体结构 哈希值:如果类未覆盖 hashcode 方法,Java 会使用默认的哈希值计算。哈希值存储在标记字中,用于快速查找对象。 分代年龄:用于分代垃圾回收的跟踪,最大值为 15。分代年龄表示对象在新生代中经历 GC 的次数。 锁状态:包括偏向锁、轻量锁和重量锁等状态信息,用于实现 Java 的同步机制。
3. 哈希值计算与存储 Java 使用默认的哈希值计算方式,并将哈希值存储在对象的标记字中。 哈希值的计算方式对于理解对象的内存布局和 GC 行为至关重要。
4. 分代年龄与 GC 分代年龄用于跟踪对象在新生代中的存活时间,是 GC 决策的重要依据。 当对象的分代年龄达到最大值时,对象可能会被晋升到老年代。
5. 锁状态与偏向锁 OOPs 中的锁状态信息包括偏向锁、轻量锁和重量锁等,用于实现 Java 的线程同步。 偏向锁是一种优化手段,当只有一个线程访问对象时,可以消除同步开销。
6. 压缩指针与类型字大小 在 32 位环境中,Java 默认使用压缩指针以减少内存使用。 压缩指针的原理在于对象起始和结束位置总是 8 字节对齐,因此无需描述对象中间的字节。 通过改变 JVM 的配置,可以启用或禁用压缩指针。
综上所述,OOPs 是 Java 对象结构中的关键组成部分,包含对象的状态信息、类型信息和锁状态等。深入理解 OOPs 的结构和行为对于优化 Java 应用的性能和稳定性至关重要。