九. 垃圾回收
-
垃圾回收针对的内存
-
堆内存,针对的是堆内存中创建的对象占用的内存。
-
堆内存中的垃圾内存可以被回收。
-
垃圾内存:垃圾对象占用的内存就是垃圾内存。
-
-
垃圾对象
-
对于开发者来说,不再使用的对象就是垃圾对象。
-
对于 jvm 来说,如何判断一个对象是否是垃圾对象呢?
-
如果没有任何引用指向一个对象,那么该对象就称为垃圾对象。
-
-
-
如何垃圾回收
-
jvm 中有一块功能专门负责垃圾回收。(垃圾回收器Garbage Collector,简称 GC)。
-
System.gc(); 通过这行代码去执行 jvm的垃圾回收器。
-
注意:GC 被执行的优先级特别低。即使调用了该方法,也不能保证 GC 立即执行。
-
-
如何判断对象被回收了
-
finalize():
-
Object 类中我们接触到的第三个方法。默认实现是空实现。
-
【该方法不要主动的去调用,被动调用的。被jvm 被动调用。】
-
当一个对象被 GC 回收的时候,该对象的 finalize 方法会被调用。
-
建议:finalize() 方法不建议重写。也不建议使用。
-
-
特殊对象回收
-
特殊对象:流对象、网络连接对象、数据库连接对象.. 必须【经过特殊的处理】才能正常回收。
-
不能 直接 赋值 为 null,GC 不可以这样。
-
-
总结:
-
回收堆内存中对象占用的内存。
-
回收的是垃圾对象占用的内存。
-
没有任何引用指向的对象是垃圾对象。
-
通过给对象的引用赋值为 null,让对象成为垃圾对象。
-
通过System.gc() 去执行JVM垃圾回收的功能。
-
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义