这个要从作用域开始说起。
比如if ,for ,switch等等这些。
出了这个结构就销毁了。
方法里的局部变量,在方法调用完就销毁。
如果是类的成员变量,在类的相应的对象销毁的时候销毁。
上面说的是普通变量,如果是静态变量的时候,从程序开始,到程序结束。
变量的生命周期要看你把这个变量声明在哪个语句模块中,如果是类的成员变量,则其声明周期贯穿整个其对象的生命周期,如果是方法内的变量(局部变量),则仅仅在该方法内有效,出了方法体则无效,失去意义;static是修饰静态代码块或者成员变量或者方法的,其方法或者代码块的生命周期横跨整个应用的生命周期。final修饰的变量只是作为一个常量(定义的标准)来用而已,其生命周期同一般变量,当然接口中的变量默认都是final的。
加载:查找并加载类的二进制数据
连接:分为三个小阶段:
验证:确保被加载的类的正确性
准备:为类的静态变量分配内存,并将其初始 化为默认值
解析:把类中的符号引用转换为直接引用
初始化:为类的静态变量赋予正确的初始值
使用:又分为主动使用和被动使用。
卸载:由JVM自带的类加载器所加载的类,在JVM的生命周期中,始终不会被卸载。但是由用户自定义的类加载器所加载的类是可以被卸载的。
以上只是做部分说明。 要细说的话,内容还是很多的。