Java常见面试题:对象引用

简介: 在Java中内存关系有两部分内容:内存分配、垃圾回收。从JDK1.2开始就提出四种引用关系:强引用、软引用、弱引用、虚引用。许多时候可能不需要编写代码,但对于这些概念必须牢记。

对象引用

在Java中内存关系有两部分内容:内存分配、垃圾回收。
从JDK1.2开始就提出四种引用关系:强引用、软引用、弱引用、虚引用。许多时候可能不需要编写代码,但对于这些概念必须牢记。

(1)强引用:对象将一直被引用,即使出现了“OutOfMemeryError”错误信息;

image.png
image.png

(2)软引用:对象将被长时间保存,一直到出现内存不足的情况才会被回收,这样的操作很多时候都会用于缓存的开发上,例如在MyBatis里就提供有软引用模式的缓存模式;

image.png
image.png
如果这个时候出现了内存不足的问题,才会进行回收,也就是说对象会尽可能保存的时间长一些。

(3)弱引用:一旦有了垃圾收集操作之后就会进行回收;

image.png
image.png
image.png

(4)虚引用:也叫幽灵引用,这种操作返回的内容永远都是null,就是不引用;

image.png

在对象垃圾收集前一定会调用finalize()方法,但如果finalize()占着它的强引用的对象不放,就会出现一个逻辑上的死锁,这个时候可以通过虚引用来解决。

更多专业知识,面试技巧就在阿里云开发者社区,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
1月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
252 0
|
2月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
2月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
3月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
3月前
|
存储 人工智能 JavaScript
Java从作用域到对象高级应用​
本内容详细讲解了JavaScript中的作用域类型(函数作用域、块作用域、全局作用域)、作用域链、垃圾回收机制、闭包、变量提升、函数参数、数组方法、内置构造函数、对象高级知识、原型链、对象赋值、深浅拷贝、递归、异常处理及this指向等内容,全面覆盖JS核心概念与编程技巧。
50 0
|
4月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
221 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
4月前
|
存储 Java
Java对象的内存布局
在HotSpot虚拟机中,Java对象的内存布局分为三部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头包含Mark Word、Class对象指针及数组长度;实例数据存储对象的实际字段内容;对齐填充用于确保对象大小为8字节的整数倍。
101 0
|
4月前
|
缓存 Java 关系型数据库
Java 面试经验总结与最新 BAT 面试资料整理含核心考点的 Java 面试经验及最新 BAT 面试资料
本文汇总了Java面试经验与BAT等大厂常见面试考点,涵盖心态准备、简历优化、面试技巧及Java基础、多线程、JVM、数据库、框架等核心技术点,并附实际代码示例,助力高效备战Java面试。
169 0
|
4月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
240 0