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

什么是 Java 中的垃圾回收?

什么是 Java 中的垃圾回收?

Java 中的垃圾回收 是程序自动执行内存管理的过程。垃圾收集器(GC)找到未使用的对象并删除它们以回收内存。在 Java 中,对象的动态内存分配是使用 new 运算符实现的,该运算符使用一些内存,并且内存保持分配状态,直到有对象使用的引用。

当没有对象的引用时,假定不再需要它,并且可以回收该对象占用的内存。由于 Java 会自动处理取消分配,因此无需明确销毁对象。

实现此目的的技术称为垃圾收集 .当系统中没有剩余内存可供分配时,不取消分配内存的程序最终可能会崩溃。据说这些程序有内存泄漏。

Java 中的垃圾收集自动发生 在程序的生命周期内,无需释放内存,从而避免内存泄漏。

在 C 语言中,使用 free() 函数释放动态分配的内存是程序员的责任。这就是 Java 内存管理领先的地方。

注意:所有对象都是在 Heap 中创建的 内存部分。稍后的教程中会对此进行详细介绍。

示例:学习 Java 中的垃圾收集器机制

步骤 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) 保存、编译并运行代码。如图所示,创建了两个对象和两个引用变量。

步骤 3) 取消注释 # 20,21,22 行。保存、编译并运行代码。

第 4 步) 如下图所示,两个引用变量指向同一个对象。

第 5 步) 取消注释 # 23 &24 行。编译、保存并运行代码

第 6 步) 如下图,s2变为null,但s3仍然指向对象,不符合java垃圾回收条件。

第 7 步) 取消注释第 25 和 26 行。保存、编译和运行代码

第 8 步) 此时没有指向该对象的引用,并且可以进行垃圾回收。它将从内存中删除,并且无法找回。

如何在 Java 中删除一个对象?

1)如果你想让你的对象符合垃圾回收的条件,请将其引用变量分配给null。

2)原始类型不是对象。它们不能被赋值为 null。


java

  1. Java 运算符
  2. Java超级
  3. Java 接口
  4. Java try-with-resources
  5. Java 注释
  6. Java 中的静态变量:什么是静态块和方法 [示例]
  7. Java中的接口与抽象类:有什么区别?
  8. Java中的构造函数重载:什么是&程序示例
  9. Java - 集合框架
  10. Java 10 - 增强的垃圾收集
  11. Java 10 - 堆分配
  12. Java 9 - 集合工厂方法