Java中静态变量Static的加载和Static垃圾回收

  • Java中类的生命周期为:

    • 1.加载

    • 2.连接

      • 2.1验证

      • 2.2准备

      • 2.3解析

    • 3.初始化

      • 类初始化的顺序

        • 3.1静态变量、静态代码块初始化

        • 3.2构造函数

        • 3.3自定义构造函数

    • 4.使用

      • 4.1对象初始化

      • 4.2垃圾收集

      • 4.3对象终结

    • 5.卸载

  • 其中静态变量Static修饰的

    • 加载:JVM在加载类的过程中为静态变量分配内存;

    • 类变量:static变量在内存中只有一个,放在方法区内,属于类变量,被所有实例共享;

    • 销毁:类被卸载时(进程结束/程序结束),静态变量被销毁,并释放内存空间;

  • 静态变量被销毁的过程

    • 好的,看到这里想回收静态变量应该是想多了;

    • Static修饰的成员变量和方法属于类,而普通的变量和方法属于对象;

    • 静态变量会常驻内存的方法区,当存在大量的静态变量时,性能就会变慢;

    • 除非进程结束或者重启才会被回收;

  • 普通变量的垃圾回收过程

    • 新生代(如果结束则收回)

    • 老年代(新生代存活下来的,如果在老年代结束则收回,否则强制Full GC,全局收回)

    • 永久代1.7以及之前(元空间1.8以及之后)

 

你可能感兴趣的:(Java)