代码之家  ›  专栏  ›  技术社区  ›  Anouar Asmai

堆栈内存和堆内存有什么区别?[关闭]

  •  -2
  • Anouar Asmai  · 技术社区  · 4 年前

    我最近在学习Core Java。那么,请告诉我Stack和Heap这两个内存之间的正确区别

    2 回复  |  直到 4 年前
        1
  •  1
  •   dan1st ashish gupta    4 年前

    一般的堆栈和堆

    每个线程都有一个 堆栈 .

    每当调用函数时,参数和一些指针都会被推送到堆栈中(堆栈也会随之增长)

    每当创建局部变量时,它也会被分配到堆栈上。

    当变量的生命周期结束或函数返回时,所有这些东西都将从堆栈中弹出,从而收缩。

    这个 是内存中由进程的所有线程共享的一部分。

    可以使用以下命令在堆上分配空间 malloc 必须被释放 free 当它不再用于防止内存泄漏时。

    由于堆可以被其他线程使用,因此它不会自动释放。

    java中的堆栈和堆

    在java中,原始局部变量将被分配到 堆栈 如果你调用一个方法并向其传递一个基元类型,java将复制变量的内容(按值调用)并将该副本传递给该方法。

    每当您使用以下命令创建对象时 new ,它将在 并且对该对象的引用被存储为基元类型。

    如果将对象(引用)传递给方法,则引用将被复制,因此方法将修改同一对象(通过引用调用)。

    JVM将检测对象是否未被使用,并自动释放它(垃圾收集)。

        2
  •  0
  •   Stefan    4 年前

    Stack用于方法内部的临时数据(变量)。 Heap用于存储寿命更长的数据,主要是“new”命令所存储的所有数据。