栈指的是:
当一个方法执行时,每个方法都会建立自己的内存栈,也就是所谓的函数作用域。在该方法内部定义的变量,将会逐个被放入该栈内存里,随着方法的执行结束,这个方法的内存栈也将被销毁。因此,所有在方法中定义的变量都是放在栈内存中的,栈中存储的是基础变量以及一些对象的引用变量,基础变量的值是存储在栈中的,而引用变量存储在栈中的是指向堆中的数组或者对象的地址,这也就是修改引用类型总会影响到其他指向这个地址的引用变量。
栈内存:存放基本类型指的是简单数据段。基本类型在当前执行环境结束时销毁。
堆指的是:
当在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(要知道对象的创建成本比较大),这个运行时数据区就是堆内存。堆内存中的对象不会随着方法的结束而销毁,可能方法结束后,这个对象还有可能被另一个引用变量所引用(方法的参数传递时很常见),如果这样,该对象将不会被销毁,只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会在核实的时候回收它。
堆内存:存放引用类型指的是那些保存在堆内存中的对象。引用类型不会随执行环境结束而销毁,只有当所有引用它的变量不存在时这个对象才被垃圾回收机制回收。