Java核心考点:final/finally/finalize与对象4种引用全解析

📅 2026/7/2 18:52:07
Java核心考点:final/finally/finalize与对象4种引用全解析
Java核心考点final/finally/finalize与对象4种引用全解析前言一、核心区分final、finally、finalize 三者详解1.1 final关键字表示不可变1.2 finally异常处理必须执行1.3 finalizeObject方法GC回收前调用1.4 三者核心对比表二、Java对象的四种引用强、软、弱、虚2.1 强引用Strong Reference永不回收2.2 软引用Soft Reference内存不足才回收2.3 弱引用Weak Reference下次GC必回收2.4 虚引用Phantom Reference随时回收等于无三、四种引用回收时机流程图四、高频面试题标准答案直接背诵4.1 final、finally、finalize 区别4.2 四种引用有哪些4.3 ThreadLocal 为什么使用弱引用结束语The Begin点点关注收藏不迷路⬇ ⬇ 底部 ⬇ ⬇前言在Java面试与核心基础知识点中final、finally、finalize的区别与对象四种引用强软弱虚是高频必考题同时也是理解Java内存管理、异常处理、ThreadLocal原理的关键内容。本文将用清晰定义、核心用法、代码示例、流程图、对比总结全方位讲解帮你一次性吃透所有考点轻松应对面试与开发一、核心区分final、finally、finalize 三者详解1.1 final关键字表示不可变final 是Java关键字用于限制不可变、不可继承、不可重写修饰类类不能被继承如String、Integer修饰方法方法不能被子类重写修饰变量变量变成常量只能赋值一次// 修饰类finalclassDemo{}// 修饰方法publicfinalvoidtest(){}// 修饰变量finalinta10;1.2 finally异常处理必须执行finally 是 try-catch 语句块无论是否异常都会执行核心用途关闭IO流关闭数据库连接释放锁资源try{// 业务代码}catch(Exceptione){// 异常处理}finally{// 必须执行关闭资源}1.3 finalizeObject方法GC回收前调用finalize 是Object类的方法由垃圾回收器GC调用作用对象被回收前做资源释放已被废弃不推荐使用。Overrideprotectedvoidfinalize()throwsThrowable{// 回收前操作}1.4 三者核心对比表关键字类型作用使用场景final关键字不可变、不可继承、不可重写定义常量、工具类finally代码块异常处理必须执行关闭资源finalize方法GC回收前调用已废弃二、Java对象的四种引用强、软、弱、虚2.1 强引用Strong Reference永不回收最常用只要引用存在GC绝不回收对象ObjectobjnewObject();// 强引用特点内存不足也不会回收JVM宁愿抛出OOM也不回收强引用对象2.2 软引用Soft Reference内存不足才回收内存溢出OOM前才会被回收适合做缓存ObjectobjnewObject();SoftReferenceObjectsfnewSoftReference(obj);objnull;sf.get();// 内存足够时返回对象不足时返回null使用场景图片缓存网页缓存不需要常驻内存的数据2.3 弱引用Weak Reference下次GC必回收只要GC触发就会被回收生命周期短ObjectobjnewObject();WeakReferenceObjectwfnewWeakReference(obj);objnull;wf.get();// GC前有值GC后为null核心重点ThreadLocal底层key就是弱引用staticclassEntryextendsWeakReferenceThreadLocal?{Objectvalue;Entry(ThreadLocal?k,Objectv){super(k);valuev;}}2.4 虚引用Phantom Reference随时回收等于无get()永远返回null仅用于监听对象回收必须配合引用队列ReferenceQueue使用。ReferenceQueuequeuenewReferenceQueue();PhantomReferenceObjectpfnewPhantomReference(obj,queue);作用监听对象被GC回收的时机管理堆外内存三、四种引用回收时机流程图创建对象强引用永不回收软引用内存不足才回收弱引用GC立即回收虚引用随时回收get()null四、高频面试题标准答案直接背诵4.1 final、finally、finalize 区别final是关键字用于不可变finally用于异常处理必须执行finalize是Object方法GC回收前调用。4.2 四种引用有哪些强引用、软引用、弱引用、虚引用。4.3 ThreadLocal 为什么使用弱引用为了避免内存泄漏ThreadLocalMap的key使用弱引用当ThreadLocal对象变为null时key会被GC自动回收。结束语final/finally/finalize 与四种引用是Java基础、面试、JVM内存管理的核心知识点理解它们能大幅提升代码健壮性与面试通过率。建议收藏本文随时复习The End点点关注收藏不迷路⬆ ⬆ 顶部 ⬆ ⬆