共同学习:
Java把内存分成:栈内存,堆内存,方法区,本地方法区和寄存器等。
1、栈内存
(1)一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。
(2)每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
(3)栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
(4)当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
(5)当数据使用完,所占空间会自动释放。
2、堆内存
(1)堆内存用于存放由new创建的对象和数组。
(2)每一个实体都有一个内存地址值
(3)实体中的变量都有默认初始化值
(4)实体不再被使用,会在不确定的时间内被垃圾回收器回收
3、方法区
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
4、寄存器,和本地方法栈,这两个用不到,除非要开发Java虚拟机 |