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

2、数组int[] x的内存分配

3、数组引用变量x的释放

4、不同引用变量指向同一个对象

5、引用变量及对象的内存分配

6、不同引用变量指向同一个对象

jdk1.8 内存机制

本文深入探讨了Java中的内存分配,包括栈和堆的区别。栈主要存储基本类型变量和对象引用,数据执行完即释放;堆用于存放new的对象和数组,具备默认初始化值,并在对象不再被引用时由垃圾回收机制自动清理。此外,文章还介绍了局部变量的定义、数组内存分配以及引用变量的生命周期。对于JDK1.8的内存机制也有所涉及。
15万+

被折叠的 条评论
为什么被折叠?



