ZGC 简介:低延迟 JVM 垃圾收集器

ZGC是Java 11引入的一种实验性垃圾收集器,旨在处理TB级别的堆并保持低暂停时间。它通过引用着色、重定位等技术实现在大内存场景下的高效内存管理。ZGC的停顿时间不随堆大小增加而增长,特别适合高响应速度要求的服务器应用。要启用ZGC,需要在启动应用时指定相关命令行选项。
摘要由CSDN通过智能技术生成

1. 简介

今天,应用程序同时为数千甚至数百万用户提供服务的情况并不少见。此类应用程序需要大量内存。但是,管理所有内存可能很容易影响应用程序性能。

为了解决这个问题,Java 11 引入了 Z 垃圾收集器 (ZGC) 作为实验性垃圾收集器 (GC) 实现。

在本文中,我们将了解 ZGC 如何在 TB 级别的堆上保持较低的暂停时间。

2. 主要概念

要了解 ZGC 的工作原理,我们需要了解内存管理和垃圾收集器背后的基本概念和术语。

2.1. 内存管理

物理内存是我们的硬件提供的 RAM。

操作系统 (OS) 为每个应用程序分配虚拟内存空间。

当然,我们将虚拟内存存储在物理内存中,OS 负责维护两者之间的映射。这种映射通常涉及硬件加速。

2.2. 多重映射

多重映射是指虚拟内存中有特定的地址,它们指向物理内存中的同一个地址。由于应用程序通过虚拟内存访问数据,因此它们对这种机制一无所知(而且它们也不需要)。

实际上,我们将虚拟内存的多个范围映射到物理内存中的同一范围。
请添加图片描述
我们稍后会看到,ZGC 需要它来发挥作用。此外,它还提供了一些安全性,因为它分隔了应用程序的内存空间。

2.3. 重定位 (Relocation)

由于我们使用动态内存分配,普通应用程序的内存会随着时间的推移而变得碎片化。这是因为当我们在内存中间释放一个对象时,那里仍然存在一个可用空间的间隙。随着时间的推移,这些差距会累积起来,我们的内存将看起来像一个由交替的可用空间和已用空间区域组成的棋盘。

当然,我们可以尝试用新对象填补这些空白。为此,我们应该扫描内存以查找足够大以容纳我们的对象的可用空间。这样做是一项昂贵的操作,特别是如果我们每次想要分配内存时都必须这样做。此外,内存仍将是碎片化的,因为我们可能无法找到具有我们需要的确切大小的空闲空间。因此,物体之间会有间隙。当然,这些差距更小。此外,我们可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值