# Java 排查 Full GC 的方法与实践
在 Java 应用程序的运行中,内存管理是至关重要的工作,而垃圾回收(Garbage Collection,GC)则是保障内存有效利用的重要手段。在 GC 过程中,可能会出现 Full GC 的情况,这通常会导致应用性能的显著下降。因此,了解如何排查和优化 Full GC 现象,将对开发和运维工作产生积极的影响。
## 什么是 Full GC?            
                
         
            
            
            
            我们的Java应用因频繁FULL GC导致性能降低很多,经过多人的定位也没有结论,于是我自主请命,经过一天的研究终于搞定了,现把经验与大家共享,相关的gc日志如下: 4.758: [Full GC [PSYoungGen: 464K->0K(71936K)] [PSOldGen: ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-09-28 14:45:00
                            
                                222阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            一: 问题背景与现象   1、健康检查失败   2、接口测试反应慢   3、系统多次CPU或内存使用率飙升,且是java进程引起二: 解决问题思路   1.确定服务已部署成功且没有被回收,健康状态检查成功,打开终端控制面板,登录服务器,若不能直接登录则先登录跳板机,再登录服务器,执行jps命令查看服务进程是否还存在2.            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-27 20:28:58
                            
                                127阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            糟糕!运行着的线上系统突然卡死无法访问,万恶的JVM GC!基于JVM运行的系统最怕什么?在JVM运行的时候,最核心的内存区域,其实就是堆内存,在这里会放各种我们系统中创建出来的对象。
而且堆内存里通常都会划分为新生代和老年代两个内存区域,对象一般来说都是优先放在新生代的。在年轻代(也可以叫做新生代)快要塞满的时候,就会触发年轻代gc,也就是对年轻代进行垃圾回收,需要把年轻代里的垃圾对象都给回收掉            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-29 09:46:12
                            
                                48阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
                文章目录什么是Checkpointing为什么使用Checkpointing哪些RDD需要使用CheckpointingCheckpointing和Cache的区别参考资料   什么是CheckpointingCheckpointing可以将RDD从其依赖关系中抽出来,保存到可靠的存储系统(例如HDFS,S3等), 即它可以将数据和元数据保存到检查指向目录中。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-05 08:12:45
                            
                                55阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            频繁full gc 通常表明应用程序在内存管理方面存在问题,可能导致性能下降,下面是排查步骤和一个详细的示例 排查步骤 收集GC日志 首先,需要开启详细的GC日志,在JVM参数中添加 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/t            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-10-15 15:30:57
                            
                                304阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             1. Full GC次数过多     相对来说,这种情况是最容易出现的,尤其是新功能上线时。对于Full GC较多的情况,其主要有如下两个特征:线上多个线程的CPU都超过了100%,通过jstack命令可以看到这些线程主要是垃圾回收线程通过jstat命令监控GC情况,可以看到Full GC次数非常多,并且次数在不断增加。   首先我们可            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-03 09:29:58
                            
                                250阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、基础概念GC(垃圾收集器)1.1 GC三种分类Minor GC:新生代GC,指发生在新生代的垃圾收集动作。所有的Minor GC都会触发全世界的暂停(stop-the-world),停止应用程序的线程,不过这个过程非常短暂。Major GC:老年代GC,指发生在老年代的垃圾收集动作。Full GC:是清理整个堆空间,包括新生代和老年代。1.2 堆的内存划分新生代 ( Young ):主要用来存            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-30 16:54:54
                            
                                266阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            问题发现凌晨03:00-04:00压测后,发现接口平均响应时间很长,压测结束仍然持续存在这个问题。压测完流量下来后,机器负载仍然较高。推测在频繁GC。检查JVM检查JVM监控,发现GC时间超长。分析JVM发现存在大量GC线程占用大量CPU资源。堆内存几乎跑满,仍在不停GC,但堆内存使用却降不下来。分析dump生成dump后,发现存在几个异常的对象SpringValue,WeakReference,            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-09-15 14:43:04
                            
                                265阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录 1. Full GC (Ergonomics)1.1 Java 进程一直进行 Full GC1.2 Full GC 的原因1.3 检查堆占用 2. 代码检查3. 解决方式 1. Full GC (Ergon            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-15 15:29:40
                            
                                1940阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.GC定义:java垃圾回收机制,目前主流的JVM(HotSpot)采用的是分代收集算法。采用类似于树形结构的可达性分析来判断对象是否存在引用。即:从GcRoot开始,把所有可以搜索的到的对象标记为存活对象。2.GC必备知识准备:JVM内存结构;常说的GC主要是针对运行的数据区域。主要需要关注五块:分别是方法区(MethodArea),Java栈(Java Stack),本地方法栈(Native            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-07 07:12:17
                            
                                46阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1: 线上出现连续几次服务不可用,  2: 刚开始通过查询内存JAVA对象大小的数量看是不是有内存泄露jmap -histo 8 发现内存中,确实存在一些不应该存在的对象。如始红圈的点,这个是POI 工具中引用的XSSFWorkbook因而本次发生Full GC原因,归结为使用POI工具不合适。 3: jmap -dump:format=b,file=heap.bin            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-08 09:43:43
                            
                                278阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前几天在做功能压测时发现应用在启动时出现了4次Full GC,并且当时还没有开始压测,当时排查了很长时间,最终发现是犯了一个低级错误,本想配置-Xss256k的,结果把-XX:MetaspaceSize配置成了256k。o(╥﹏╥)o本着不在同一块儿石头上绊倒两次的原则,又系统了学习了一下Full GC的触发条件和如何查看GC日志。简单来说有如下几种情况会触发gc1.调用System.gc()触发            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-08 07:22:10
                            
                                116阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            JVM堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生代即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但非            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-06 14:32:10
                            
                                104阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # 如何触发 Java 中的 Full GC(完全垃圾回收)
在 Java 中,垃圾收集是自动管理内存的一种机制,但有时我们需要手动触发 Full GC(完全垃圾回收)。本文将指导刚入行的小白开发者了解如何实现这一过程。我们将通过一个表格梳理出实现 Full GC 的步骤,并详细讲解每一步,并提供相关代码和注释。此外,我们还会展示状态图和类图,以帮助您更好地理解这一过程。
## 实现步骤
下            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-08-27 06:52:04
                            
                                57阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、GC四大算法1.GC算法总体概述 jvm在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的是指新生代。因此GC按照回收的区域又分了两种类型,一种是普通GC(minor GC),一种是全局GC(major GC or Full GC)。 Minor GC和Full GC的区别 普通GC(minor GC):只针对新生代区域的GC,指发生在新生代的垃圾回收,因为大多数java对            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-08 07:38:19
                            
                                114阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、介绍jstatjstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]1、命令格式jstat命令命令格式:jstat [Options] vmid [interval] [count]参数说明:Options,选项,我们一般使用 -gcutil 查看gc情况vmid,VM的进程号,即当前运行的jav            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-11 22:50:31
                            
                                2083阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在面试中我们会经常被问到full Gc相关的问题,比如什么情况下会发生full gc,如何去排查频繁发生full Gc的问题等。要想轻松自如的回答这些问题,我们就必须充分的去理解gc的触发条件,gc回收的内容,以及gc具体的执行过程。掌握了这3个要点,full gc相关的问题就易如反掌了。一、gc的定义GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与C+            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-17 22:17:03
                            
                                144阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            背景在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。事情最初是线上某应用垃圾收集出现Full GC异常的现象,应用中个别实例Full GC时间特别长,持续时间约为15~30秒,平均每2周左右触发一次;JVM参数配置“-Xms20            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-08 11:17:53
                            
                                35阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            早上服务频繁出现 Full GC 报警(由于昨晚下掉了参数,其实会有 Full GC 产生已经在意料之中,但属实没想到会触发的这么频            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-10-07 10:35:42
                            
                                331阅读
                            
                                                                             
                 
                
                                
                    