当前位置:实例文章 » 其他实例» [文章]p7付费课程笔记5:串行gc以及并行gc

p7付费课程笔记5:串行gc以及并行gc

发布人:shili8 发布时间:2025-03-12 05:37 阅读次数:0

**P7付费课程笔记:串行GC与并行GC**

在Java虚拟机中,垃圾回收(Garbage Collection, GC)是为了回收不再使用的内存空间而进行的一系列操作。GC有两种主要类型:串行GC和并行GC。

**1.串行GC**

串行GC是一种最基本的GC方式,它在一个线程上执行垃圾回收,整个过程是串行的。在Java虚拟机中,串行GC通常用于小型应用程序或测试环境。

###串行GC流程1. **检测可回收对象**:GC开始扫描堆中的所有对象,找出哪些对象已经不再被引用。
2. **标记阶段**:GC将这些不可达的对象标记为垃圾。
3. **清除阶段**:GC释放这些标记为垃圾的对象所占用的内存空间。

###串行GC示例代码

javapublic class SerialGCTest {
 public static void main(String[] args) {
 // 创建一个大型数组,占用大量内存 byte[] bigArray = new byte[1024 *1024];

 // 在主线程中执行垃圾回收 System.gc();

 // 等待GC完成后继续执行程序 try {
 Thread.sleep(1000);
 } catch (InterruptedException e) {
 Thread.currentThread().interrupt();
 }
 }
}


###串行GC优缺点**优点:**

* 简单易懂,容易实现。
* 在小型应用程序或测试环境中性能较好。

**缺点:**

* GC过程是串行的,会导致程序暂停执行。
* 不适合大型应用程序或高负载环境。

**2. 并行GC**

并行GC是一种更为复杂的GC方式,它在多个线程上同时执行垃圾回收。这种方式可以显著提高GC的效率和吞吐量。

### 并行GC流程1. **检测可回收对象**:GC开始扫描堆中的所有对象,找出哪些对象已经不再被引用。
2. **标记阶段**:GC将这些不可达的对象标记为垃圾。
3. **清除阶段**:GC释放这些标记为垃圾的对象所占用的内存空间。

### 并行GC示例代码
javapublic class ParallelGCTest {
 public static void main(String[] args) {
 // 创建一个大型数组,占用大量内存 byte[] bigArray = new byte[1024 *1024];

 // 在多个线程中执行垃圾回收 Thread thread1 = new Thread(() -> System.gc());
 Thread thread2 = new Thread(() -> System.gc());

 thread1.start();
 thread2.start();

 try {
 thread1.join();
 thread2.join();
 } catch (InterruptedException e) {
 Thread.currentThread().interrupt();
 }
 }
}


### 并行GC优缺点**优点:**

* GC过程是并行的,提高了GC效率和吞吐量。
* 适合大型应用程序或高负载环境。

**缺点:**

* 需要多个线程来执行GC,增加了系统资源占用。
* GC过程可能会导致程序暂停执行。

综上所述,串行GC和并行GC都是Java虚拟机中垃圾回收的两种主要类型。串行GC简单易懂,但不适合大型应用程序或高负载环境,而并行GC可以显著提高GC效率和吞吐量,但需要多个线程来执行GC,增加了系统资源占用。

相关标签:笔记
其他信息

其他资源

Top