从JDK7 update4开始完全支持G1垃圾收集器,这是一款服务器型的垃圾收集器,针对大内存、多处理器的机器。G1在实现高吞吐量的同时尽可能的满足指定的GC暂停时间。整个堆的操作,比如全局的标记操作是和用户线程并发执行的。
堆被分成一组大小相等的区域,每一块区域都是连续的虚拟内存。G1执行一个并发的全局标记操作来确定堆中的哪些对象还存活着。全局标记阶段执行完成后,就可以确定哪个区域最空,首先清理最空(垃圾最多)的区域,往往能释放大量的内存。
G1从一个或多个需要回收的区域赋值对象到堆中的一个单独区域,在这个过程中会压缩和释放内存。为了减少暂停时间和增加吞吐量,这个过程在多处理器的机子上是并行执行的。
G1还采用了暂定预测模型来满足用户定义的暂停时间。需要注意的是G1不是一个实时的垃圾收集器,它只是尽可能的满足用户指定的时间,但不是绝对。G1会基于以前的数据收集来评估在满足用户指定暂停时间的前提下可以收集多少个区域。
G1的焦点是为用户运行需要大内存但是GC延迟有时间限制的应用提供一个解决方案。这里的大内存是6G及以上的内存,时间延迟低于0.5秒。有一下特征的应用程序适用G1:
1. 存活的对象占用了50%以上的堆大小
2. 不希望暂停时间超过0.5-1秒
3. The rate of object allocation rate or promotion varies significantly(此句不太理解)
G1的命令行选项:
-XX:+UseG1GC |
使用G1作为垃圾收集器 |
-XX:MaxGCPauseMillis=n |
设置最大暂停时间 |
-XX:InitiatingHeapOccupancyPercent=n |
触发G1并发收集的堆占用百分比,默认值45 |
-XX:NewRatio=n |
New/old比例,默认值2 |
-XX:SurvivorRatio=n |
Eden/survivor比例,默认值8 |
-XX:MaxTenuringThreshold=n |
设置最大年龄,默认值15 |
-XX:ParallelGCThreads=n |
并行阶段垃圾收集的线程数 |
-XX:ConcGCThreads=n |
并发阶段垃圾收集的线程数 |
-XX:G1ReservePercent=n |
保留的对大小占整个堆的百分比,默认值10 |
-XX:G1HeapRegionSize=n |
每个区域的大小,最小1MB,最大32MB |
相关推荐
Garbage-First is a server-style garbage collector, targeted for multi-processors with large memories, that meets a soft real-time goal with high probability, while achieving high throughput. Whole-...
4. Garbage-First(G1)垃圾收集器:G1垃圾收集器是Java 7中引入的新型垃圾收集器,使用增量式标记-清除算法。 5. Z垃圾收集器(Z Garbage Collector):Z垃圾收集器是Java 11中引入的低延迟垃圾收集器,使用增量式...
4. **垃圾收集器类型**:HotSpot提供了多种GC策略,如Serial GC、Parallel GC、Parallel Old GC、CMS(Concurrent Mark Sweep)、G1(Garbage-First)和ZGC(Zing Concurrent Low Latency Collector)。每种收集器有...
Garbage-First Collector is a server-style garbage collector that replaces the Concurrent Mark-Sweep Collector (CMS). Java HotSpot Virtual Machine Performance Enhancements JDBC 4.1 JDBC 4.1 ...
3. **垃圾回收器优化**:引入了一个新的垃圾回收器——Garbage-First Collector (G1),旨在替换 Concurrent Mark-Sweep Collector (CMS)。G1 收集器通过减少停顿时间和提高吞吐量来改善应用性能。 4. **Java ...
4. **G1收集器** (9 Garbage-First Garbage Collector .png & 10 Garbage-First Garbage Collector Tuning .png) - G1收集器是现代Java应用的首选,它引入了区域(Region)的概念,可以预测并控制垃圾收集的暂停...
4. G1(Garbage-First)Garbage Collector:G1是为大内存应用设计的,它将堆划分为多个区域,可以并行、增量地回收内存,同时最小化碎片。G1能够预测和控制垃圾回收停顿时间,适合大规模服务器应用。启用G1使用-XX:...
7. **JVM中的垃圾回收**:在Java环境中,JVM(Java Virtual Machine)内置了多种垃圾回收器,如Serial GC、Parallel GC、CMS(Concurrent Mark Sweep)和G1(Garbage-First)等。每种都有其优缺点,适用于不同类型的...
4. **垃圾收集器类型**:Java虚拟机(JVM)提供了多种垃圾收集器,如Serial、Parallel、Parallel Old、CMS(Concurrent Mark Sweep)、G1(Garbage-First)和ZGC(Zing Garbage Collector)。每种收集器有其特定的...
- ZGC(Z Garbage Collector)和Shenandoah:低暂停时间,适用于大规模数据处理。 3. 垃圾回收过程 - 标记:找出所有活动对象。 - 清除:删除未被标记的对象。 - 整理:移动存活对象,紧凑内存空间。 4. Stop-...
6. 多区域收集器:文档进一步介绍了如垃圾优先(Garbage-First,G1)、平衡(Balanced)、调时器(Metronome)以及C4和Shenandoah收集器等多区域收集器,这些收集器为大规模应用提供了不同的性能特征。 7. 堆结构:...
- **G1(Garbage-First)Collector**:新一代的垃圾回收器,目标是达到可预测的暂停时间。 4. **代码示例与注释** - 在Java中,我们可以通过`System.gc()`触发垃圾回收,但不推荐这样做,因为这可能导致非确定性...
3. **垃圾收集器类型**:Java提供了多种不同的垃圾收集器,如Serial GC、Parallel GC、CMS(Concurrent Mark Sweep)、G1(Garbage-First)和ZGC(Zing Garbage Collector)。每种收集器在性能、停顿时间和资源消耗...
3. **G1收集器(Garbage-First Garbage Collector)**:目标是可预测的暂停时间,适合大型应用,可以通过 `-XX:+UseG1GC` 开启。 4. **Z收集器(Z Garbage Collector)**:也称为ZGC,设计目标是极低的暂停时间,...
- **G1 (Garbage-First) GC**:分代垃圾回收器,旨在提供可预测的暂停时间模型,适用于大型服务器应用。 5. **垃圾回收的优化** - **内存调优**:调整堆大小、新生代和老年代的比例等参数,以适应应用需求。 - *...
- G1 (Garbage-First) Collector:新一代的垃圾收集器,目标是实现可预测的停顿时间模型。 6. **垃圾收集器选择与调优**: - 根据应用程序的特性(如响应时间、吞吐量需求等)选择合适的收集器组合。 - 使用JVM...