`
我是你超哥哥
  • 浏览: 8481 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

java面试之jvm垃圾回收机制

阅读更多

在我工作第四个年头的时候, 因为各种原因(薪水低和薪水低。。。)不得不离开自己工作了近三年的公司,走上面试的征程,这一次的面试和三年前的面试改变了不少, 每次面试都会提到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堆空间地址,更有利于大的, 年龄老的对象申请内存

 

 

以上是个人的理解, 还望指教!

 

 

分享到:
评论

相关推荐

    Java高级面试JVM虚拟机、内存结构、垃圾回收机制

    面试中,深入理解JVM的工作原理,特别是内存管理和垃圾回收机制,对于Java工程师来说至关重要。能够分析和调优JVM参数,解决内存溢出、性能瓶颈等问题,是高级工程师必备的能力。此外,了解不同JVM实现之间的差异和...

    java面试-JVM+多线程三个版本面试题,全集.zip

    这份"java面试-JVM+多线程三个版本面试题,全集.zip"包含了针对这两个主题的全面问题集,旨在帮助求职者准备面试。 首先,我们来深入了解一下JVM。Java虚拟机是Java程序的运行环境,它负责执行字节码,并提供了内存...

    java面试题_jvm(21题)

    4. **垃圾收集与内存管理**:JVM如何识别无用对象并进行垃圾回收(GC),理解新生代、老年代、永久代的概念,以及GC算法如复制、标记-清除、标记-整理和分代收集等。 5. **内存溢出与内存泄漏**:区分两者区别,...

    Java虚拟机(JVM)面试题

    垃圾回收机制是JVM中的一种机制,用于回收不再使用的对象,以释放内存。垃圾回收机制主要有两种:标记-清除算法和复制算法。标记-清除算法是将对象标记为可回收,然后清除这些对象。复制算法是将对象复制到另一个...

    2024年java面试题-jvm之java虚拟机面试题

    ### 2024年Java面试题:JVM之Java虚拟机面试题 #### Java内存模型及基础知识 **1. Java代码如何被计算机识别** Java程序最初由开发人员使用Java语法编写,这些代码人类可读但计算机无法直接理解。为了使计算机...

    Java集合、JVM面试题

    Java集合、JVM面试题,包括Java集合、JVM内存模型、垃圾回收机制、JVM调优、异常处理等相关面试题 适用于Java编程的初学者,加强自身对于Java集合、JVM、异常处理等方面的知识储备,更好的应对面试机会

    JVM垃圾回收及监控优化1

    总之,理解JVM的内存管理和垃圾回收机制对于解决内存溢出问题、提升系统并发性能至关重要。开发者需要深入理解不同GC算法的原理和特点,结合实际应用需求,进行合理的配置和调优,确保应用稳定、高效地运行。

    java面试宝典2018版

    对于Java虚拟机,书中的内容可能包括JVM内存模型、垃圾回收机制、类加载过程、性能优化等方面。了解JVM的工作原理有助于开发者写出更高效、更稳定的代码,并能有效地解决运行时问题。 并发编程是Java开发中的难点之...

    Java面试题、JVM面试题、多线程面试题

    它的主要特性包括平台独立性、垃圾回收机制、丰富的类库和强大的网络支持。 2. **解释一下Java虚拟机(JVM)?** JVM是Java的核心组件,它负责运行所有的Java程序。它提供了一个运行环境,使得Java代码能在任何...

    Java知识,JVM面试资料

    它具备自动内存管理功能,通过垃圾回收机制有效地避免了内存泄露和内存溢出的问题,简化了程序员的工作。此外,JVM提供了异常处理机制,让程序更易于处理错误和异常,增强了程序的可靠性。JVM还支持多线程编程,允许...

    Java面试之笑傲江湖

    4. **Java面试之乾坤大挪移**:可能指Java内存模型和垃圾回收机制。理解堆内存、栈内存、方法区的概念,以及GC(Garbage Collection)的工作原理,如分代收集、引用类型等,是考察程序员对内存管理深度理解的常见...

    Java面试题合集最新版2024.zip

    Java面试通常涵盖多个方面,包括Java基础知识、编程技能、问题解决能力,以及对Java生态系统和相关...JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。

    08-Java虚拟机(JVM)面试题-重点.docx

    垃圾回收算法是 JVM 垃圾回收机制的核心部分,负责回收 Java 对象占用的内存空间。常见的垃圾回收算法有: #### 7.1 标记-清除算法 标记-清除算法是最简单的垃圾回收算法,它首先标记出所有的活动对象,然后清除...

    2023黑马面试宝典-Java面试宝典大全-java面试宝典黑马

    7. **JVM**:Java虚拟机是Java程序运行的基石,理解内存模型(堆、栈、方法区)、垃圾回收机制(GC)、类加载过程、性能优化等,能展现对Java运行原理的深入理解。 8. **Spring框架**:作为最流行的Java企业级应用...

    2017java面试题

    4. **内存管理与垃圾回收**:理解Java虚拟机(JVM)的工作原理,特别是堆内存和栈内存的区别,以及垃圾回收机制。 5. **多线程**:涉及Thread类、Runnable接口、同步机制(synchronized关键字、wait()、notify()和...

    2021最新Java面试题及答案V2.0.pdf

    JVM通过垃圾回收机制来自动管理内存,包括如何确定垃圾、引用计数法、可达性分析、标记清除算法、复制算法、标记整理算法和分代收集算法等。不同算法适用于不同的场景,例如新生代垃圾收集主要使用复制算法,而老...

    JAVA核心面试知识整理.pdf

    Java核心面试知识整理包括了对JVM内存区域、垃圾回收机制、GC算法、JVM类加载机制、Java集合框架以及Java IO/NIO等多个方面的深入讲解。以下是对这些知识点的详细介绍: JVM内存区域:JVM内存区域包括了程序计数器...

    100道 Jvm面试题总结及答案.docx

    Jvm 的垃圾回收机制可以防止内存泄露,防止程序崩溃,提高 Java 程序的性能和稳定性。 Jvm 的双亲委托机制可以确保类文件的安全性,防止类加载的混乱。Jvm 的双亲委托机制可以通过多种方式来实现,例如 Tomcat 可以...

    Java 面试难点 重点

    ### Java面试难点与重点解析:内存泄漏 #### Java与软件行业的变革 Java作为一种重要的编程语言,自诞生以来就极大地改变了软件开发的方式与效率。它的设计理念是“一次编写,到处运行”,这得益于Java虚拟机(JVM...

    Java JVM面试必备八股文

    这份“Java JVM面试必备八股文”涵盖了JVM的基础知识、垃圾回收(GC)机制和类加载机制等关键点,旨在帮助准备面试的Java开发者提升对JVM的理解和应用能力。 首先,我们要了解JVM的基础概念。JVM是Java虚拟机的缩写...

Global site tag (gtag.js) - Google Analytics