亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 垃圾回收机制详解:原理、演示与最佳实践

什么是 Java 垃圾回收?

Java 的垃圾收集器(GC)自动管理内存,开发者无需手动释放。当对象没有活引用时,GC 回收其堆空间,防止内存泄漏导致应用崩溃。

Java 中对象通过 new 在堆上创建。运行时跟踪引用;当最后一个引用消失,对象即符合回收条件。GC 定期在后台运行,让代码更简洁安全。

与 C 语言需调用 free() 不同,Java 消除了悬空指针和未定义行为风险,增强可靠性和安全性。

所有 Java 对象都位于内存的 堆 区域——GC 扫描的区域。

实战演示:观察 GC 动作

步骤 1 – 复制代码到编辑器:

class Student {
    int a;
    int b;
    public void setData(int c, int d) {
        a = c;
        b = d;
    }
    public void showData() {
        System.out.println("Value of a = " + a);
        System.out.println("Value of b = " + b);
    }
    public static void main(String[] args) {
        Student s1 = new Student();
        Student s2 = new Student();
        s1.setData(1, 2);
        s2.setData(3, 4);
        s1.showData();
        s2.showData();
        // Student s3;
        // s3 = s2;
        // s3.showData();
        // s2 = null;
        // s3.showData();
        // s3 = null;
        // s3.showData();
    }
}

步骤 2 – 编译运行。 初始创建两个 Student 对象和两个引用变量。参考下图。

Java 垃圾回收机制详解:原理、演示与最佳实践

步骤 3 – 取消注释第 20‑22 行,重新运行。 现在 s3 指向与 s2 同一对象。图示显示两个引用共享一个对象。

Java 垃圾回收机制详解:原理、演示与最佳实践

步骤 4 – 取消注释第 23‑24 行。 将 s2 设为 null,s3 仍引用该对象,对象依然存活。

Java 垃圾回收机制详解:原理、演示与最佳实践

步骤 5 – 取消注释第 25‑26 行。 s2 和 s3 均设为 null,对象符合 GC 条件。最终图示展示此状态。

Java 垃圾回收机制详解:原理、演示与最佳实践

让对象符合回收条件

  1. 将引用变量赋为 null。GC 运行时会回收内存。
  2. 基本类型(int、double 等)不是对象,不能为 null。

Java 垃圾回收机制详解:原理、演示与最佳实践

注意:不建议显式使用终结器,应依赖 GC。

java

  1. 精通 Java 运算符:类型、语法与实战示例
  2. 精通 Java super 关键字:高级用法与实战示例
  3. 精通 Java 接口:概念、实现与最佳实践
  4. 精通 Java Try-With-Resources:自动资源管理详解
  5. Java 注解详解:类型、放置位置与实战示例
  6. Java static 详解:静态变量、方法、代码块与实战示例
  7. Java 接口 vs 抽象类:如何选择合适的抽象方式
  8. Java 构造器重载详解:规则、链式调用与实战代码
  9. Java 集合框架完全指南:接口、实现、算法与最佳实践
  10. Java 10 垃圾收集器接口与 G1 并行 Full GC
  11. Java 10 堆分配增强:支持 NV-DIMM 等替代内存设备
  12. Java 9 集合工厂方法:一行代码创建不可变 List/Set/Map