在我工作第四个年头的时候, 因为各种原因(薪水低和薪水低。。。)不得不离开自己工作了近三年的公司,走上面试的征程,这一次的面试和三年前的面试改变了不少, 每次面试都会提到jvm的垃圾回收机制!
jvm的内存结构 分为 heap堆 stack栈 和方法区method area
这里讲一下jvm的heap堆的垃圾收集算法
jvm将堆内存分为 新生代 和老年代(就是所谓的分带的垃圾回收) ,在heap新生代中又分为eden 和survivor1 和survivor2
垃圾收集算法分为:
1,标记-清除 算法;
2,标记-复制算法;
3,标记-整理算法;
分带的垃圾回收机制:
新生代:
在对象创建时, Object obj = new Object(); obj 对象的引用将存放早方法区 method area , 真正的对象则存放在 heap堆 eden的中, 当在必要的条件下 jvm 发生gc时, jvm会根据 对象的引用计数器 或者 对象的可达性 进行判断, 使用标记-复制算法(使用于heap堆的新生代)对 eden中的存活对象进行标记 、年龄+1 然后将标记的存活对象 copy到 heap堆的survivor1 将eden清空, 当survivor1 发生gc 同样的进行标记复制存活对象 到 survivor2 然后 survivor1 清空, 交替, 新生代的对象很多, 就会将年龄大的存活对象 放到 老年代中
老年代:
当heap堆老年代jvm发生gc, 则会使用 标记整理算法, 堆存活的对象进行标记, 然后将对象进行整理,以免出现存储碎片, 导致大对象申请不到内存
在新生代中和老年代采用不同的垃圾回收算法, 因为新生代中的对象基本上创建之后 就会死亡, 存活率很低, 因此使用标记复制算法, 将少量的留下来的对象copy到另外一块地方, 然后清空存储区域;
而在老年代中 绝大部分的对象都是存活的, 因此使用标记整理的算法 将死掉对象 清除, 然后整理存储空间, 释放出连续的heap堆空间地址,更有利于大的, 年龄老的对象申请内存
以上是个人的理解, 还望指教!
相关推荐
面试中,深入理解JVM的工作原理,特别是内存管理和垃圾回收机制,对于Java工程师来说至关重要。能够分析和调优JVM参数,解决内存溢出、性能瓶颈等问题,是高级工程师必备的能力。此外,了解不同JVM实现之间的差异和...
这份"java面试-JVM+多线程三个版本面试题,全集.zip"包含了针对这两个主题的全面问题集,旨在帮助求职者准备面试。 首先,我们来深入了解一下JVM。Java虚拟机是Java程序的运行环境,它负责执行字节码,并提供了内存...
4. **垃圾收集与内存管理**:JVM如何识别无用对象并进行垃圾回收(GC),理解新生代、老年代、永久代的概念,以及GC算法如复制、标记-清除、标记-整理和分代收集等。 5. **内存溢出与内存泄漏**:区分两者区别,...
垃圾回收机制是JVM中的一种机制,用于回收不再使用的对象,以释放内存。垃圾回收机制主要有两种:标记-清除算法和复制算法。标记-清除算法是将对象标记为可回收,然后清除这些对象。复制算法是将对象复制到另一个...
### 2024年Java面试题:JVM之Java虚拟机面试题 #### Java内存模型及基础知识 **1. Java代码如何被计算机识别** Java程序最初由开发人员使用Java语法编写,这些代码人类可读但计算机无法直接理解。为了使计算机...
Java集合、JVM面试题,包括Java集合、JVM内存模型、垃圾回收机制、JVM调优、异常处理等相关面试题 适用于Java编程的初学者,加强自身对于Java集合、JVM、异常处理等方面的知识储备,更好的应对面试机会
总之,理解JVM的内存管理和垃圾回收机制对于解决内存溢出问题、提升系统并发性能至关重要。开发者需要深入理解不同GC算法的原理和特点,结合实际应用需求,进行合理的配置和调优,确保应用稳定、高效地运行。
对于Java虚拟机,书中的内容可能包括JVM内存模型、垃圾回收机制、类加载过程、性能优化等方面。了解JVM的工作原理有助于开发者写出更高效、更稳定的代码,并能有效地解决运行时问题。 并发编程是Java开发中的难点之...
它的主要特性包括平台独立性、垃圾回收机制、丰富的类库和强大的网络支持。 2. **解释一下Java虚拟机(JVM)?** JVM是Java的核心组件,它负责运行所有的Java程序。它提供了一个运行环境,使得Java代码能在任何...
它具备自动内存管理功能,通过垃圾回收机制有效地避免了内存泄露和内存溢出的问题,简化了程序员的工作。此外,JVM提供了异常处理机制,让程序更易于处理错误和异常,增强了程序的可靠性。JVM还支持多线程编程,允许...
4. **Java面试之乾坤大挪移**:可能指Java内存模型和垃圾回收机制。理解堆内存、栈内存、方法区的概念,以及GC(Garbage Collection)的工作原理,如分代收集、引用类型等,是考察程序员对内存管理深度理解的常见...
Java面试通常涵盖多个方面,包括Java基础知识、编程技能、问题解决能力,以及对Java生态系统和相关...JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。
垃圾回收算法是 JVM 垃圾回收机制的核心部分,负责回收 Java 对象占用的内存空间。常见的垃圾回收算法有: #### 7.1 标记-清除算法 标记-清除算法是最简单的垃圾回收算法,它首先标记出所有的活动对象,然后清除...
7. **JVM**:Java虚拟机是Java程序运行的基石,理解内存模型(堆、栈、方法区)、垃圾回收机制(GC)、类加载过程、性能优化等,能展现对Java运行原理的深入理解。 8. **Spring框架**:作为最流行的Java企业级应用...
4. **内存管理与垃圾回收**:理解Java虚拟机(JVM)的工作原理,特别是堆内存和栈内存的区别,以及垃圾回收机制。 5. **多线程**:涉及Thread类、Runnable接口、同步机制(synchronized关键字、wait()、notify()和...
JVM通过垃圾回收机制来自动管理内存,包括如何确定垃圾、引用计数法、可达性分析、标记清除算法、复制算法、标记整理算法和分代收集算法等。不同算法适用于不同的场景,例如新生代垃圾收集主要使用复制算法,而老...
Java核心面试知识整理包括了对JVM内存区域、垃圾回收机制、GC算法、JVM类加载机制、Java集合框架以及Java IO/NIO等多个方面的深入讲解。以下是对这些知识点的详细介绍: JVM内存区域:JVM内存区域包括了程序计数器...
Jvm 的垃圾回收机制可以防止内存泄露,防止程序崩溃,提高 Java 程序的性能和稳定性。 Jvm 的双亲委托机制可以确保类文件的安全性,防止类加载的混乱。Jvm 的双亲委托机制可以通过多种方式来实现,例如 Tomcat 可以...
### Java面试难点与重点解析:内存泄漏 #### Java与软件行业的变革 Java作为一种重要的编程语言,自诞生以来就极大地改变了软件开发的方式与效率。它的设计理念是“一次编写,到处运行”,这得益于Java虚拟机(JVM...
这份“Java JVM面试必备八股文”涵盖了JVM的基础知识、垃圾回收(GC)机制和类加载机制等关键点,旨在帮助准备面试的Java开发者提升对JVM的理解和应用能力。 首先,我们要了解JVM的基础概念。JVM是Java虚拟机的缩写...