一些JVM面试题

Java垃圾回收器的原理

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

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

serial + serialOld 串行化的垃圾回收

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

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

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

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

对象的生命周期:

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

垃圾回收效率:

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

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

垃圾回收方法:

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

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

相关推荐
On The Road :12 小时前
深入理解 JVM 垃圾回收:GC 是什么、如何判定垃圾、四大回收算法全解析
jvm·算法
Yves..14 小时前
JVM 学习笔记:内存区域、类加载机制与垃圾回收
jvm
akinggw1 天前
libagentcore - 一个基于c++的AI多agent系统升级到2.0版本
开发语言·jvm·c++
yh弓长1 天前
JVM 核心机制
jvm
tg_xianheyun2 天前
腾讯云国际账号注册代充值适合哪些海外业务场景?
jvm
yuniko-n2 天前
【JVM】对象内存布局
java·开发语言·jvm
wuminyu2 天前
JVM执行引擎学习总结:热点字节码编译成本地机器码
java·linux·c语言·jvm·c++
wuminyu3 天前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
骑着蜗牛撵大象3273 天前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
tryxr3 天前
JVM 垃圾回收机制
java·jvm·gc·垃圾回收