首页 > 代码库 > Java内存区域和变量生命周期
Java内存区域和变量生命周期
在一台电脑上的内存存储区域分为6种:
1.寄存器: 寄存器是运行最快的,寄存器在系统中早就已经存在了,寄存器的数量是有限的,被严格要求
Java程序员不能显示的调用寄存器
2.栈: 栈中存储着基本数据类型的变量以及引用变量 栈中元素在超出其生命周期后会自动销毁
栈中元素一经创建,系统会为其分配内存空间,在其内存空间里存取的值是真值(真实存放的值)
栈中元素互不影响 每个在栈中的变量都有其自己对应的内存空间 里面存取着值
在栈中存取的必须是确定了其存储大小和其生命周期。栈中不允许存放没有确定的变量
3.堆: 堆中存储着的是对象类型。类对象可以是字符串类型,数组类型,类类型。堆中存取的对象是
运行时确定的,不必事先知道其数据大小与生命周期。在堆里有一个Java垃圾自动回收机制,
针对的对象是那些失去了引用的对象类型。系统在发现没有变量能去引用这块内存时,就会认为这是
一块废弃内存,在不久的不定时间内,会将其释放。
4.静态存储区域: 独立于栈和堆的存储区域,里面存储的数据类型是静态变量,可以随时通过类名来进行调用
静态变量一经初始化,就不会被初始化第2遍
5.常量存储区: 里面存放的final字段修饰的变量,一经创建就不能进行修改了,被存放在ROM中
6.磁盘: 我们平时使用的磁盘,用于数据存储的持久化,有点类似于手机设备上的sdcard
当我们写了一个String str = new String[]{" "};
相当于在栈内存里为引用变量分配了一个内存空间,该内存空间里存储的是在堆内存里分配的String类对象的地址
当我们调用该引用变量,相当于调用了该对象。
一个Class由2部分组成,数据域和方法
成员变量会自动被初始化,如果没有显示的去初始化
局部变量需要显示初始化,不然会出错
Java内存区域和变量生命周期