[面试问题] Java 堆栈和堆的结构
关于 Java 堆栈和堆的面试问题简述
Java 内存结构
我们为运行应用程序而构建的 Java 运行时数据区位于内存中
-
所有线程共享 PC 寄存器、本地方法堆栈和方法区。
-
只有堆栈和堆区域是线程专用的
堆的结构
伊甸园 → 幸存者 → 旧的
对象按上述格式移动,这基本上是创建的顺序。
垃圾回收器的作用
-
伊甸园(Eden):Java 对象创建后立即存放的地方。
-
Survivor & Old:根据引用程度移动对象的空间
-
标记和扫描:使用标记和扫描算法。
小型垃圾收集器
负责根据对象引用移动 Eden 和 Survivor 区域(年轻一代),如果它们的内存超过允许的数量。
主要垃圾收集器
当旧区域(长期一代)的内存超过允许上限时,它将删除所有未引用的对象并回收内存。
- 在删除过程中,停止除运行垃圾回收器的线程以外的所有线程("Stop-The-World")。
堆栈结构
基本类型 + 局部变量 + 参数
在参数的情况下,它用作对堆区对象的引用,并带有对象的地址值。
→ 如果参数指向不同的对象,地址值也会不同,存储在堆中的对象也不会立即消失!(保持到主要 GC 执行为止)
另请参见。
댓글 작성
게시글에 대한 의견을 남겨 주세요.