判断一个对象是否为垃圾: 该对象没有被其他对象所引用.
判定对象是否被引用的算法: 引用计数法,可达性分析算法.
可以作为GC Root的对象:
1 虚拟机栈中引用的对象(栈帧中的本地变量表)
2 方法区中常量引用对象
3 方法区中类静态引用的对象
4 本地方法栈JNI(Native方法)中引用的对象
5 活跃线程的引用对象
Object的 finalize方法和C++的析构函数的作用是否相同:
与析构函数不同,析构函数调用确定,而他是不确定性的
未被引用的对象放置于F-Queue队列
方法执行可能随时被终止
给予对象最后一次重生的机会
java中的强引用,软引用,弱引用,虚引用有什么用:
强引用:最普遍的引用,即使抛出内存溢出异常也不会回收强引用的对象,通过将对象设置未null来弱化引用,使其被回收
软引用:标识对象处在有用但非必须的状态,当内存空间不足时会回收该对象,可以用来实现内存敏感的高速缓存
弱引用:非必须对象,比软引用更弱一些,GC时会被回收,被回收的概率不大,主要是应为垃圾回收线程的优先级较低,适用于偶尔被使用但又不影响垃圾收集的对象
虚引用:不会决定对象的生命周期,任何时候都可能被垃圾收集器回收.主要用来被垃圾回收期回收的活动,起哨兵的作用,必须和引用队列联合使用
四种引用级别的由高到底依次为:强-软-弱-虚
引用队列:无实际存储结构,存储逻辑依赖于内部节点之间的关系来表达.存储关联的且被GC的软弱虚引用
垃圾收集器汇总:
新生代的垃圾收集器:Serial(复制算法),ParNew(复制算法),ParallelScavenge(复制算法)
老年代垃圾收集器:CMS(标记清除),SerialOld(标记整理),ParallelOld(标记整理)
横跨新生代和老年代的收集器 G1,在JDK8默认是Parallel Scavenge(新生代)+ Serial Old(老年代)JKD9默认G1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY