2.1 内存管理
物理内存是我们硬件提供的RAM。
操作系统(OS)为每个应用程序分配虚拟内存空间。
当然,我们将虚拟内存存储在物理内存中,操作系统负责维护两者之间的映射。此映射通常涉及硬件加速。
2.2 垃圾收集
当我们创建Java应用程序时,我们不必释放我们分配的内存,因为垃圾收集器会为我们执行此操作。总之,GC可以通过一系列参考资料从我们的应用程序中获取哪些对象,从而释放出我们无法触及的对象。
为实现这一目标,垃圾收集器有多个阶段。
2.3 GC阶段的属性
GC阶段可以具有不同的属性:
- 并行阶段可以在多个GC线程上运行
- 串行阶段在单个线程上运行
- 停止世界阶段不能与应用程序代码同时运行
- 并发阶段可以在后台运行,而我们的应用程序可以完成它的工作
- 增量阶段可以在完成所有工作之前终止,并在以后继续
所有上述技术都有其优点和缺点。例如,假设我们有一个可以与我们的应用程序同时运行的阶段。此阶段的串行实现需要1%的整体CPU性能并运行1000ms。相比之下,并行实现使用30%的CPU并在50ms内完成其工作。
在此示例中,并行解决方案使用更多的CPU,因为它可能更复杂并且必须同步线程。对于CPU升沉应用程序(例如批处理作业)来说,这是一个问题,因为我们的计算能力较低,无法进行有效的工作。
当然,这个例子有编号。但是,很明显所有应用程序都有自己的特性,因此它们具有不同的GC要求。
有关更详细的描述&#