【问题标题】:Why are objects made on the heap and not on the stack in Java?为什么Java中的对象是在堆上而不是在栈上?
【发布时间】:2020-10-27 00:32:33
【问题描述】:

这个决定背后的原因是什么?为什么动态地在堆上而不是在堆栈上创建对象?这样做是否可以节省空间?

【问题讨论】:

  • 我的问题是你知道堆和栈的区别吗?
  • 当你为一个对象或任何类型的数据结构分配内存时,它通常在堆上——系统中的空闲内存——在大多数编程语言中。堆栈通常用于为函数/方法调用推送内存(变量)。在Java 中,被传递对象的句柄(地址、指针)被放入堆栈。在硬件中,堆栈指针有时会受到限制。堆栈不适用于长期(程序持续时间)存储;从某种意义上说,它用于在进行子例程调用时保存和恢复上下文。这个概念远远超出了 Java。
  • 你了解堆和栈是什么,它们有什么区别等等!?
  • 这能回答你的问题吗? Heap vs Stack vs Perm Space

标签: java


【解决方案1】:

如果你在栈上分配一个对象,它的生命周期被限制在当前的方法调用中。当方法返回时,对象会自动销毁,连同存储在堆栈帧中的所有其他内容。这意味着不可能编写返回对象的函数或将新对象添加到列表的函数。

您可以通过复制移动像c++那样的对象来使其工作。但是你必须处理 C++ 的复杂性。 Java 应该比这更简单。

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 2016-10-15
    • 2013-11-08
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2010-12-05
    • 2016-12-27
    • 2015-03-28
    相关资源
    最近更新 更多