中文
[面试问题] Java 堆栈和堆的结构

[面试问题] Java 堆栈和堆的结构

关于 Java 堆栈和堆的面试问题简述

Java 内存结构

参见 JVM 结构和原理

我们为运行应用程序而构建的 Java 运行时数据区位于内存中

  • 所有线程共享 PC 寄存器、本地方法堆栈和方法区。

  • 只有堆栈和堆区域是线程专用的

堆的结构

伊甸园 → 幸存者 → 旧的

对象按上述格式移动,这基本上是创建的顺序。

垃圾回收器的作用

  • 伊甸园(Eden):Java 对象创建后立即存放的地方。

  • Survivor & Old:根据引用程度移动对象的空间

  • 标记和扫描:使用标记和扫描算法。

小型垃圾收集器

负责根据对象引用移动 Eden 和 Survivor 区域(年轻一代),如果它们的内存超过允许的数量。

主要垃圾收集器

当旧区域(长期一代)的内存超过允许上限时,它将删除所有未引用的对象并回收内存。

  • 在删除过程中,停止除运行垃圾回收器的线程以外的所有线程("Stop-The-World")。

堆栈结构

基本类型 + 局部变量 + 参数

在参数的情况下,它用作对堆区对象的引用,并带有对象的地址值。

→ 如果参数指向不同的对象,地址值也会不同,存储在堆中的对象也不会立即消失!(保持到主要 GC 执行为止)

另请参见。

编码工厂的文章

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0