b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

的内存指令区的管理与内存管理的区别

电脑杂谈  发布时间:2021-03-03 07:02:12  来源:网络整理

从JVM了解堆栈

堆栈(stack)是JVM的内存指令区域。堆栈管理非常简单。推入具有一定长度字节的数据或指令,然后堆栈指针将相应的字节位移压入堆栈;弹出具有特定字节长度的数据或指令,并且堆栈指针弹出堆栈。并且每个操作的数据或指令字节长度是已知的。因此,Java基本数据类型,Java指令代码和常量都存储在Stack中。

堆(heap)是JVM的内存数据区域。堆的管理非常复杂。每次分配可变长度的内存空间时,它专门用于保存对象的实例。

JVM空间分配

堆就是堆:1、手动应用和释放空间[k1​​]较大的空闲区域

jvm 堆内存与栈内存_堆内存和栈内存_jvm 堆内存与栈内存

stack是堆栈:1、自动分配并释放2、有限的空间

示例:在Java中,如果仅声明一个对象,则首先在堆栈存储器中为其分配地址空间,如果创建一个新对象,则将其实例化,然后在堆存储器中为其分配地址。

对象a = null;仅在堆栈中分配内存。

new Object();在堆中分配空间。

Object b = new Object();在堆栈中分配空间并指向堆中的地址。

堆栈在内存中的关系

堆是Stack的子集。

堆栈的访问速度仅次于寄存器,并且其存储效率高于堆。它可以共享存储数据,但是在运行之前必须确定数据的大小和寿命。

堆内存和栈内存_jvm 堆内存与栈内存_jvm 堆内存与栈内存

堆是可以在运行时动态分配的数据区域。就速度而言,它比Stack慢。 Heap中的数据不会共享,并且大小和生存期可以在运行时确定。

new关键字是在运行时在Heap中创建一个对象,由于不共享堆数据,因此每次都会创建一个新对象。

回收方面的区别

Stack的内存管理是按顺序分配的,并且其长度是固定的,没有内存回收问题

堆以可变长度随机分配内存,并且内存分配和回收存在问题

JVM中还有另一个GC进程,该进程会定期扫描Heap。它根据保存在Stack中的4字节对象地址扫描Heap,在Heap中定位这些对象,并进行一些优化(例如合并空闲内存块),并假设未在Heap中扫描的区域是空闲的,则全部刷新(实际上是删除堆栈中失去其对象地址的无用对象。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-362707-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 王占云
        王占云

        台湾问题已经超出了政治范畴

      • 布林奴
        布林奴

        我们烊烊最棒了

      热点图片
      拼命载入中...