为实现这一目标,垃圾收集器有多个阶段。
2.3 GC阶段的属性
GC阶段可以具有不同的属性:
- 并行阶段可以在多个GC线程上运行
- 串行阶段在单个线程上运行
- 停止世界阶段不能与应用程序代码同时运行
- 并发阶段可以在后台运行,而我们的应用程序可以完成它的工作
- 增量阶段可以在完成所有工作之前终止,并在以后继续
所有上述技术都有其优点和缺点。例如,假设我们有一个可以与我们的应用程序同时运行的阶段。此阶段的串行实现需要1%的整体CPU性能并运行1000ms。相比之下,并行实现使用30%的CPU并在50ms内完成其工作。
在此示例中,并行解决方案使用更多的CPU,因为它可能更复杂并且必须同步线程。对于CPU升沉应用程序(例如批处理作业)来说,这是一个问题,因为我们的计算能力较低,无法进行有效的工作。
当然,这个例子有编号。但是,很明显所有应用程序都有自己的特性,因此它们具有不同的GC要求。
有关更详细的描述,请访问我们关于Java内存管理的文章。
3.ZGC Concepts
除了久经考验的GC技术之外,ZGC还引入了两个新概念:指针着色和负载屏障。
3.1 指针着色
指针表示虚拟内存中字节的位置。但是,我们不一定要使用指针的所有位来执行此操作 - 某些位可以表示指针的属性。这就是我们所说的指针着色。
使用32位,我们可以处理4GB字节。由于现在配置的内存已经远远超过了这个数量,我们显然不能使用32位。 因此,ZG