当前位置: 首页 > 面试题库 >

堆vs堆栈vs烫发空间

郗奇玮
2023-03-14
问题内容
  • Java内存空间(Perm空间,Space Stack,堆空间)之间有什么区别?
  • JVM什么时候使用一个或另一个?
  • 如果我使用Scala / Groovy / etc等,会有区别吗?

问题答案:

只是

  • 堆空间:所有活动对象都分配在这里。
  • 堆栈空间:在方法调用或变量实例化中存储对对象的引用以获取变量。
  • 烫发空间:存储已加载的类信息

例如:

Student std = new Student();

执行完上述行之后,内存状态将是这样。

  • 堆:存储“ new Student()”
  • 堆栈:存储有关“ std”的信息
  • 烫发空间:存储有关学生班级的信息


 类似资料:
  • 问题内容: 内核堆栈和用户堆栈有什么区别?为什么要使用内核堆栈?如果在ISR中声明了局部变量,它将存储在哪里?每个进程都有自己的内核堆栈吗?那么,进程如何在这两个堆栈之间进行协调? 问题答案: 内核堆栈和用户堆栈有什么区别? 简而言之,除了在内存中使用不同的位置(并因此为堆栈指针寄存器使用不同的值)之外,什么也没有,而且通常使用不同的内存访问保护。也就是说,在用户模式下执行时,即使映射了内核内存(

  • 我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?

  • 主要内容:Stack 类中的属性,Stack 类中的方法在 C# 中,堆栈(Stack)类表示一个后进先出的对象集合,当您需要对项目进行后进先出的访问时,则可以使用堆栈。向堆栈中添加元素称为推入元素,从堆栈中移除元素称为弹出元素。 Stack 类中的属性 下表列出了 Stack 类中一些常用的属性: 属性 描述 Count 获取堆栈中包含的元素个数 IsSynchronized 判断是否同步对堆栈的访问(线程安全) SyncRoot 获取可用于同步对堆

  • 6.5.2 堆栈 堆栈(stack)也是一种数据集合体,其中的数据构成一种具有“后进先出(LIFO)”性 质的数据结构,即最后加入堆栈的数据总是首先取出。现实中堆栈的例子俯拾皆是,例如碗橱里的一摞碗、纸箱里的一摞书、弹夹中的子弹等等(图 6.10),他们共同的特点是先放进 去的东西垫底,最后放进去的东西在顶上,而取东西的顺序正好相反。 [图片丢失] 图 6.10 现实中的堆栈例子 如果忽略各种具体

  • 2. 堆栈 在第 3 节 “递归”中我们已经对堆栈这种数据结构有了初步认识。堆栈是一组元素的集合,类似于数组,不同之处在于,数组可以按下标随机访问,这次访问a[5]下次可以访问a[1],但是堆栈的访问规则被限制为Push和Pop两种操作,Push(入栈或压栈)向栈顶添加元素,Pop(出栈或弹出)则取出当前栈顶的元素,也就是说,只能访问栈顶元素而不能访问栈中其它元素。如果所有元素的类型相同,堆栈的存

  • 问题内容: 我正在尝试编写一个脚本,当用户上传文件且未输入名称时,将返回错误。我试过使用is_null,empty和isset,但它们都不起作用。例如,即使输入名称,下面的is_null也会返回错误。有人可以帮忙吗? 问题答案: 将检查是否设置了变量,即 将检查变量是否为空,即 将检查哪个与空值不同,因为它设置为非空字符串。(NULL可能是一个令人困惑的概念) 由于您的标题是字符串,所以我想您想使