栈
函数中定义的基本类型变量,对象的引用变量都在函数的栈内存中分配。
数据执行完毕,变量会立即释放,解约内存。
栈内存中的数据,无默认初始化值,需要手动设置。
堆
堆内存用来存放new的对象和数组。
堆内存中所有实体都有内存地址值。
堆内存中的实体是用来封装数据的,这些数据都有默认初始化值。
堆内存中的实体不被指向时,JVM启动垃圾回收机制,自动清除。
补充局部变量定义:
定义在函数中的变量、定义在函数中的参数上的变量、定义在for循环内部的变量
demo
1、main函数的变量x和show函数的变量x 内存分配
2、数组int[] x的内存分配
3、数组引用变量x的释放
4、不同引用变量指向同一个对象
5、引用变量及对象的内存分配
6、不同引用变量指向同一个对象
jdk1.8 内存机制