面试连环炮系列(二十六):什么情况下JVM频繁发生full GC
1. 什么情况下JVM频繁发生full GC?
full gc触发条件是老年代空间不足,具体原因有四个:
- 系统并发高、执行耗时长或者创建对象过多,导致 young gc频繁,且gc后存活对象太多,但是survivor 区存放不下(太小或动态年龄判断) 导致对象快速进入老年代,造成full gc。
- 过多的大对象载入到内存,新生代空间不足会转入老年代,导致full gc。
- 发生内存溢出,老年代驻留了大量释放不掉的对象,只要有一点点对象进入老年代就达到 full gc的水位。
- 频繁的手动调用System.gc()。
2. 在实际项目什么代码导致full GC?
- 创建对象过大或过多,比如处理图片、缓存数据。
- IO资源没有释放,比如网络请求没有关闭。
3. 线上怎么排查是哪个程序导致的full GC?
- top命令查看CPU的占用情况
top命令获得应用程序的进程ID,Java程序的“COMMOND”列是"java" - jstat命令查看GC的统计
jstat -gc 3038 #3038是进程号
- jmap命令生成堆栈文件
jmap -F -dump:format=b,file=heapDump 3038 #3038是进程号
- 下载heapDump文件,通过http://gceasy.io/网站或者VisualVM分析堆栈文件,观察Classes最多的一列是哪个代码导致的。
参考(摘抄的文字版权属于原作者):
https://www.cnblogs.com/mushishi/p/14553105.html
https://www.cnblogs.com/wujf/p/10972234.html
https://blog.csdn.net/soaring0121/article/details/83620480
面试连环炮系列(二十六):什么情况下JVM频繁发生full GC的更多相关文章
- Web 前端开发人员和设计师必读精华文章【系列二十六】
<Web 前端开发精华文章推荐>2014年第5期(总第26期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- 学习ASP.NET Core Blazor编程系列二十六——登录(5)
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...
- 面试连环炮系列(十二):说说Atomiclnteger的使用场景
说说Atomiclnteger的使用场景 AtomicInteger提供原子操作来进行Integer的使用,适合并发情况下的使用,比如两个线程对同一个整数累加. 为什么Atomiclnteger是线程 ...
- 面试连环炮系列(十四): HTTP状态码302的跳转逻辑
HTTP状态码302的跳转逻辑 302状态码表示重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地 ...
- BizTalk开发系列(二十六) 使用Web Service
Web Service是在构建SOA平台中广泛使用的技术.在BizTalk开发过程中使用SOAP适配器接收和发送 Web Services 请求.业务流程可以发布为 Web Services 并使用外 ...
- SSE图像算法优化系列二十六:和时间赛跑之优化高斯金字塔建立的计算过程。
图像金字塔技术在很多层面上都有着广泛的应用,很多开源的工具也都有对他们的建立写了专门的函数,比如IPP,比如OpenCV等等,这方面的理论文章特别多,我不需要赘述,但是我发现大部多分开源的代码的实现都 ...
- 面试连环炮系列(十五):说说Eureka的高可用方案
说说Eureka的高可用方案 至少3个Eureka实例才能满足高可用,配置方法如下: 准备三个节点node1,node2,node3. 在每个实例的application.xml文件里加入 eurek ...
- 面试连环炮系列(十):一个线程调用两次start会怎么样
一个线程调用两次start会怎么样 Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常. 谈谈线程的生命周期和状态转移 新 ...
- 企业应用架构研究系列二十六:信号量SemaphoreSlim与Semaphore
在进行多线程程序的开发和设计的过程中,不可避免的需要引入semaphore信号量这个组件,这是.net框架提供的一个对多线程计数互斥的方案,就是允许指定的线程个数访问特定的资源而增加的 一个" ...
- Web 开发人员和设计师必读文章推荐【系列二十九】
<Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
随机推荐
- 简单封装 Flurl
FlurlHttpClient类 public class FlurlHttpClient { private readonly FlurlClient client; public FlurlHtt ...
- C#/.NET/.NET Core优秀项目和框架2024年2月简报
前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍.功能特点.使用方式以及部分功能截图 ...
- Java 数组对象 小测试
1 package com.bytezero.bank; 2 /** 3 * 4 * @Description 5 * @author Bytezero·zhenglei! Email:4204982 ...
- element_ui 知识点整理
第一章复习,树型组件数据填充:数据组件需要的数据绑定到:data 但是具体那些字绑生成标签需要在定义一人:props ="这儿绑定对象" 对象中label children ...
- [.Net 6]写一个简单的文件上传控件后端
此项目是配合上一篇文章[Vue]写一个简单的文件上传控件 - 林晓lx - 博客园 (cnblogs.com) 的后端程序,使用.Net 6项目框架搭建,开发前请安装Visual Studio 20 ...
- 一文搞懂Vue的MVVM模式与双向绑定
v-model 是 Vue.js 框架中用于实现双向数据绑定的指令.它充分体现了 MVVM(Model-View-ViewModel)模式中的双向数据绑定特性.下面我们将详细解释 v-model 如何 ...
- Failed to execute goal on project WebBackend: Could not resolve dependencies for project com.lang.yi:WebBackend:jar:1.0.0
一.问题由来 自己在搭建项目的时候报一个错误,如标题所示,具体错误信息如下: Failed to execute goal on project WebBackend: Could not resol ...
- Ayu vscode主题
Ayu vscode主题
- Vue3.x知识图谱
Vue3.x知识图谱 https://gitee.com/jishupang/vue3-knowledge-map/tree/master 回头有时间再贴图吧
- 阿里云Python UDP Server和client基础教程
壹: socket通信是常用的一种通信方式,熟练掌握,快速的入戏,是一个程序员必备的素质. 贰: 注意:udp和tcp的套接字: 服务端代码: #!/usr/bin/env python3 # -*- ...