Java变量生命周期由声明位置决定:类变量随类加载而生、卸载而亡,存于方法区;实例变量依附对象,存于堆内存;局部变量限于作用域,存于虚拟机栈。

类变量(静态变量):随类加载而生,随类卸载而亡
用 static 修饰、在类里方法外声明的变量,属于类本身,不依赖任何对象。
- 创建时机:类第一次被 JVM 加载时(比如首次 new 实例、首次调用静态方法、首次访问静态字段),完成初始化(有显式值用显式值,否则用默认值)
- 存活时间:整个 JVM 运行期间,只要类没被卸载(通常不会卸载),它就一直存在
- 销毁时机:类卸载时(极少见,如热部署场景),JVM 清理方法区,变量随之消失
- 存储位置:方法区(元空间)
实例变量(成员变量):绑定对象,生同生,死同死
在类里方法外声明、但没有 static修饰的变量,每个对象独有一份。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 创建时机:执行 new 操作时,在堆中为对象分配内存的同时,完成默认初始化(int→0,Object→null)或显式初始化
- 存活时间:从构造方法执行完毕起,只要该对象还被至少一个强引用持有,变量就有效
- 销毁时机:对象变为不可达后,等待 GC 回收;回收时整个对象(含所有实例变量)一并从堆中清除
- 存储位置:堆内存(与所属对象在一起)
局部变量:进块即生,出块即失
在方法、构造器、代码块({}内)或作为形参声明的变量,只服务当前执行上下文。
- 创建时机:执行到声明语句时,在当前线程栈帧中分配空间并初始化(必须显式赋值才能使用,无默认值)
- 存活时间:仅限所在作用域——方法参数活在整个方法内;for 循环里的 int i = 0 活在整个 for 语句(包括循环体);if 块里的变量只在 if 内可用
- 销毁时机:离开作用域瞬间就不可访问;对应栈帧弹出后,所占栈空间自动释放
- 存储位置:虚拟机栈(线程私有)

















