一些JVM面试题

Java垃圾回收器的原理

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

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

serial + serialOld 串行化的垃圾回收

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

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

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

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

对象的生命周期:

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

垃圾回收效率:

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

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

垃圾回收方法:

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

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

相关推荐
Unstoppable226 小时前
八股训练营第 37 天 | Java 内存区域有哪些部分?介绍一下什么是强引用、软引用、弱引用、虚引用?有哪些垃圾回收算法?有哪些垃圾回收器?
java·jvm·八股
没有bug.的程序员6 小时前
GC日志解析:从日志看全流程
java·网络·jvm·spring·日志·gc
稚辉君.MCA_P8_Java8 小时前
Gemini永久会员 深度解析jvm内存结构
jvm·后端·架构
廋到被风吹走10 小时前
【JDK版本】JDK1.8相比JDK1.7 JVM(Metaspace 与 G1 GC)
java·开发语言·jvm
stillaliveQEJ11 小时前
【JVM】基础概念之内存结构介绍
jvm
Zzzzzxl_11 小时前
互联网大厂Java/Agent面试:Spring Boot、JVM、微服务、RAG与向量检索实战问答
java·jvm·spring boot·kafka·rag·microservices·vectordb
铅笔侠_小龙虾20 小时前
Arthas 命令
java·jvm
上78将1 天前
JVM回收垃圾机制
java·开发语言·jvm
无敌最俊朗@1 天前
C++ 内存管理与编译原理 (面试复习2)
java·开发语言·jvm
酷ku的森1 天前
JVM垃圾回收机制
jvm