-
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以及之后)
-