Java 系统退出后的垃圾回收

Java 系统退出后的垃圾回收,java,garbage-collection,Java,Garbage Collection,我在读关于Java的垃圾收集和处理的文章。我还有两个问题 假设我有下面的课程 public final class Employee { private final String empID; private final String empFirstName; private final String empLastName; public Employee(String ID, String Firstname, String Lastname) { this.empID = I

我在读关于Java的垃圾收集和处理的文章。我还有两个问题

  • 假设我有下面的课程

    public final class Employee {
    
    private final String empID;
    private final String empFirstName;
    private final String empLastName;
    
    public Employee(String ID, String Firstname, String Lastname)
    {
        this.empID = ID;
        this.empFirstName = Firstname;
        this.empLastName = Lastname;
    
    }
    
    public String getEmpID() {
        return empID;
    }
    
    public String getEmpFirstName() {
        return empFirstName;
    }
    
    public String getEmpLastName() {
        return empLastName;
    }
    
  • 我将employee对象添加到
    ArrayList

    List<Employee> empList = new ArrayList<Employee>();
    
    empList.add(new Employee("1", "Sally","Solomon"));
    empList.add(new Employee("2", "Harry","Solomon"));
    
    List empList=new ArrayList();
    添加(新员工(“1”、“Sally”、“Solomon”);
    添加(新员工(“2”、“哈里”、“所罗门”);
    
    现在,如果我在插入最后一个employee对象之后立即调用
    System.exit(0)
    ,GC何时运行以释放内存

  • 在提供的一个链接中,它讨论了GC和静态变量。我对GC概念有点陌生,有点困惑。链接说静态变量不会被垃圾收集。使用静态变量时如何释放内存?当应用程序关闭时,内存是否会被释放
  • 如果我在插入最后一个employee对象后立即调用
    System.exit(0)
    ,GC何时运行以释放内存

    当JVM退出时,它不需要运行自己的垃圾收集器来释放内存。当进程退出时,操作系统会回收进程的内存

    这不是JVM特有的东西

    使用静态变量时如何释放内存

    您可以清空或删除对这些静态对象的引用。还有其他一些可能性:

    当应用程序关闭时,内存是否会被释放

    是的,但不一定是JVM的GC。操作系统负责管理它——这是它工作的一部分

    如果我在插入最后一个employee对象后立即调用
    System.exit(0)
    ,GC何时运行以释放内存

    当JVM退出时,它不需要运行自己的垃圾收集器来释放内存。当进程退出时,操作系统会回收进程的内存

    这不是JVM特有的东西

    使用静态变量时如何释放内存

    您可以清空或删除对这些静态对象的引用。还有其他一些可能性:

    当应用程序关闭时,内存是否会被释放

    是的,但不一定是JVM的GC。操作系统负责管理它——这是它工作的一部分