JVM中的GC系统

什么是GC?

GC(Garbage Collection)称之为垃圾回收,在JVM的执行引擎中自带这样的一个GC系统,此系统会按照一定的算法对内存进行监控和垃圾回收。

如何判断哪些对象是垃圾?

1、引用计数法:每个对象中应该有一个计数器。只要有引用引用着这个对象,这个对象的引用就会加1,没有引用这个计数器的值就是0,当计数器的值为0时,就说明这个对象是垃圾对象。

      缺点:可能存在相互引用,循环引用的对象不能被及时回收。

2、可达性分析:是否可以通过GC Root对象找到这个对象,找不到就认为是垃圾对象。

      缺点:对象引用链越长,对象的查找效率相对慢一些。

你知道哪些常用的GC算法?

1、标记清除算法(扫描内存,对活着的对象进行标记,再次扫描内存,对未标记的对象进行清除)

2、标记复制算法(扫描内存,将活着的对象标记同时拷贝到一块空闲区域,然后将原有的内存全部清空)

3、标记整理算法(扫描内存,将活着的对象向一侧移动,然后将边界外的内存进行清空)

JVM执行GC时的线程策略?

1、串行(整个GC过程,只有一个回收垃圾线程执行)

2、并行(允许多线程利用多核CPU优势并行GC)

3、并发(允许GC线程和业务线程并发执行)

JVM中有哪些常用的垃圾回收器?

1、Serial(串行垃圾回收器)

2、Parallel(并行垃圾回收器)

3、CMS(并发垃圾回收)

4、G1(基于大内存的并发垃圾回收)

Serial收集器的特点?

 1、内部只使用一个线程进行垃圾回收,不能执行并行化(不能充分利用多核CPU优势),但是响应速度较快。

2、GC时所有正在执行的业务的线程都要暂停(Stop The World-STW)

3、新生代使用标记复制算法,老年代使用标记整理算法。

应用:-XX:+UseSerialGC

Parallel收集器的特点?

1、内部有多个线程进行垃圾回收,可以利用多核CPU优势进行并行GC操作,可以减少GC暂停时间,但是响应速度较慢,影响用户体验。

2、GC时所有正在执行的业务线程都要暂停(Stop The World -STW)

3、新生代使用标记复制算法,老年代使用标记整理算法。

应用:-XX:+UseParallelGC

CMS(Concurrent Mark and Sweep)收集器的特点?

1、内部有多个线程进行垃圾回收,可以利用多核CPU优势进行并行GC操作,可以减少GC暂停时间。

2、用户线程和GC线程可以并发执行,GC执行时在初识标记和修正标记阶段会STW,暂停时间比较短。

3、新生代使用的是标记复制算法,老年代使用的是标记清除算法(不整理内存,响应速度会更快),相对于标记整理算法,这个算法响应速度会更快(用户体验会更好)。

4、CMS底层采用了三色标记法(黑色、灰色、白色),标记过程中可能会产生漏标、错标现象。

应用:-XX:+UseConcMarkSweepGC

G1(Garbage-First)收集器的特点?

1、工作于服务器模式,主要面向多核、大内存的服务器应用。

2、整个堆不再分为连续的年轻代和老年代,而是划分为了多个小堆区。

3、GC时不会每次收集整个堆,而是以增量方法进行GC操作,每次只是对一小堆去进行GC。

4、更加可控的暂停时间,更大的吞吐量,更少的碎片。需要运行在更大的内存上(>=64G),消耗的整体资源会比较多,底层采用三色标记法进行对象标记,此过程会有漏标现象,但漏标的概率要比CMS要好。

5、年轻代使用标记复制算法,老年代使用标记整理算法。

应用:-XX:+UseG1GC

JVM如何调优?

1、为什么调优?

降低系统宕机风险

2、调优的目标?

减少GC次数,提高吞吐量和响应速度,改善用户体验。

3、调优的方案?

更换CPU,内存、调内存大小、比例参数、调整GC收集器。

JVM常用参数分析

检查类异常

-XX:+TraceClassLoading

方法区参数配置

-XX:MetaspaceSize

-XX:MaxMetaspceSize

常用堆参数配置

-Xms2048m(设置初始堆大小为2048m)

-Xmx2048m(设置最大堆大小为2048m)

-Xmn1g(设置年轻代大小为1g)

-XX:NewRatio=4(设置年轻代与老年代的比例大小)

-XX:SurvivorRatio=4(设置年轻代中的Eden区与Survivor区比值,这个的4表示4:1:1)

-XX:MaxTenuringThreshold=15(设置年轻代对象转换为老年代对象最大年龄值,默认值是15)

常用栈参数配置

-Xss128k(设置每个线程的栈大小)

GC日志参数配置

-XX:+PrintGC

-XX:+PrintGCDetail

posted on 2023-02-17 19:47  披着狼皮的阳  阅读(231)  评论(0)    收藏  举报