一些JVM面试题

Java垃圾回收器的原理

有三对常见的垃圾回收器:

在JDK1.8之前,有三种常见的垃圾回收器,

serial + serialOld 串行化的垃圾回收

PS + PO 多线程并行回收,可以动态调整堆内存的大小,关注系统的吞吐量

ParNew + CMS ParNew本质上是serial 在多线程下的优化,CMS关注系统的暂停时间,允许用户线程和垃圾回收线程在一些步骤中并发进行,从而降低了用户等待时间

在JDK1.8之后,默认使用G1垃圾回收器, 这个时候,堆的划分方式有变化,划分成相等的region,G1会根据最大暂停时间来确定一次GC中回收哪些region,而不是一次性把某个区域全部回收一遍

Java垃圾回收为什么要分为新生代和老年代

对象的生命周期:

大部分对象都是短暂存在的,真正能在堆中长期持有的对象是很少的,如果把不同存活时间的对象都放在一个区域管理回收,效率会很低

垃圾回收效率:

在新生代中,得益于minorGC可以比较频繁使用,新创建的对象如果被视作垃圾就会很快被回收

而老年代的fullGC的频率就较低,因为对象的生命周期更长

垃圾回收方法:

新生代中主要是采用复制算法,复制算法可以快速清除大量的垃圾对象

老年代中主要采用标记整理算法,因为它的对象存活率比较高

相关推荐

  1. 一些JVM面试

    2024-06-09 08:10:05       11 阅读
  2. jvm面试

    2024-06-09 08:10:05       28 阅读
  3. jvm面试

    2024-06-09 08:10:05       35 阅读
  4. JVM-面试

    2024-06-09 08:10:05       28 阅读
  5. JVM相关面试

    2024-06-09 08:10:05       18 阅读
  6. JVM面试(二)

    2024-06-09 08:10:05       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 08:10:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 08:10:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 08:10:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 08:10:05       18 阅读

热门阅读

  1. C++的std::optional的用法

    2024-06-09 08:10:05       6 阅读
  2. OCP学习笔记-007 SQL语言之三:DDL

    2024-06-09 08:10:05       12 阅读
  3. 跨网段路由

    2024-06-09 08:10:05       9 阅读
  4. Redisson知识

    2024-06-09 08:10:05       11 阅读
  5. Linux进程基本概念

    2024-06-09 08:10:05       11 阅读
  6. 2024-06-08 问AI: 大语言模型中,思维链CoT是什么?

    2024-06-09 08:10:05       12 阅读
  7. 自然语言处理(NLP)—— 符号方法与符号语言

    2024-06-09 08:10:05       6 阅读
  8. git凭证

    git凭证

    2024-06-09 08:10:05      7 阅读
  9. Sass 使用指南:让 CSS 编程更高效、更强大

    2024-06-09 08:10:05       9 阅读
  10. AI学习指南机器学习篇-使用C4.5算法构建决策树

    2024-06-09 08:10:05       9 阅读
  11. Scala学习笔记9: 继承

    2024-06-09 08:10:05       9 阅读