⑴ java哪些数据存在堆里哪些数据存在栈里
栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。
栈中主要存放一些基本类型的变量(,int,
short,
long,
byte,
float,
double,
boolean,
char)和对象句柄。
栈有一个很重要的特殊性,就是存在栈中的数据可以共享。
⑵ 每日一问(十三)栈,堆,方法区分别存放哪些变量
堆区:
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到烂谈蚂操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 。
栈区:
1.每个线程包含一个栈区,栈中只保存基础数据类型的饥埋值和对象以及基础数据的引用
2.每个栈中的数据(基础数据类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令侍族区(存放操作指令)。
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
⑶ C语言里,哪些变量是存放在堆里,哪些是存放在栈里
放在堆里的数据是管理员自己开辟空间和释放空间,如,new 和malloc。
而放在栈里的数据时计算机自动分配内存和释放的,如变量。
⑷ java,堆和栈是怎么分工的就是说分别用来存放什么
两种不同的内存结构
栈: 存放基本数据类型、对象的引用
堆:存放对象的数据
⑸ Java中 堆空间与栈空间,有什么区别,一般存什么数据
对空间很大,存储了很多的类,对象等,栈空间很小,存储的一般是类和对象的地址,通过地址可以找到对应的对空间的类和对象
⑹ C语言中的栈、堆是什么
C语言中的堆和栈都是一种数据项按序排列的数据结构。
栈就像装数据的桶或箱子
我们先从大家比较熟悉的栈说起吧,它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。
这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。
堆像一棵倒过来的树
而堆就不同了,堆是一种经过排序的树形数据结构,每个结点都有一个值。
通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
由于堆的这个特性,常用来实现优先队列,堆的存取是随意,这就如同我们在图书馆的书架上取书。
虽然书的摆放是有顺序的,但是我们想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子,我们可以直接取出我们想要的书。
(6)堆和栈都存储了哪些数据扩展阅读:
关于堆和栈区别的比喻
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
参考资料来源:网络-堆栈
⑺ java 堆和栈 分别存什么东西
栈上不会存储方法,方法是随对象变化的,内存给栈分配的内存很小,
java中在内存中可以分为3大部分栈,堆,静态区,方法作为对象的一部分存储在堆中,堆中还包含池(用来存储String类型)。