java的堆 栈 方法区-java基础练习题:JAVA的基本类型
发布时间:2023-06-14 16:11 浏览次数:次 作者:佚名
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)
堆区:
1.存储的是new出来的对象和数组,每一个对象都包含一个与之对应的class的信息。(class的目的是获得操做指令)
2.jvm只有一个堆区(heap)被全部线程共享java的堆 栈 方法区,堆中不存放基本类型和对象引用,只存放对象自己
栈区:
1.每一个线程包含一个栈区,栈中保存的是全部的变量,包括基本类型和引用类型,栈中的每一个变量都包含类型、名称、值这些内容,只不过基本类型变量的值为一个具体的值,而引用类型的变量的值为对象在堆中的地址。
2.每一个栈中的数据(原始类型和对象引用)都是私有的,其余栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操做指令区(存放操做指令)。
方法区:
1.又叫静态区,跟堆同样,被全部的线程共享。方法区包含全部的class和static变量。java
2.方法区中包含的都是在整个程序中永远惟一的元素,如class,static变量。数组
3.字符串常量池就是存放在方法区。(具体缘由参见:)jvm
堆和栈的不一样:测试
存数数据不一样spa
回收方式不一样线程
栈中当超过变量的做用域后java的堆 栈 方法区,java会自动释放掉为该变量分配的内存空间,该内存空间能够马上被另做他用。对象
数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,可是仍然占着内存,在随后的一个不肯定的时