栈:java的基本数据类型和对象是在栈中分配
堆:new 出来的
类变量(static静态变量)在堆中分配,但是地址值是存储在栈中
实例变量在new的时候不是连续在堆中分配,而是根据其地址值通过哈希算法换算成一长串数据表示该对象在堆中的物理位置
--生命周期:该对象的引用丢失后,将被GC例如可回收排队名单而不是立即释放堆中内存
局部变量(在某段代码(for循环等)或方法内申明并初始化的才是局部变量):当执行到局部变量时在栈中开辟内存,脱离其作用域时,内存立即释放。
栈:java的基本数据类型和对象是在栈中分配
堆:new 出来的
类变量(static静态变量)在堆中分配,但是地址值是存储在栈中
实例变量在new的时候不是连续在堆中分配,而是根据其地址值通过哈希算法换算成一长串数据表示该对象在堆中的物理位置
--生命周期:该对象的引用丢失后,将被GC例如可回收排队名单而不是立即释放堆中内存
局部变量(在某段代码(for循环等)或方法内申明并初始化的才是局部变量):当执行到局部变量时在栈中开辟内存,脱离其作用域时,内存立即释放。