向一个集合里添加很多数据这种OOM的例子就不说了

1.内存飙升频繁FullGC

内存飙升频繁FullGC又没有发生OOM很明显这个对象在年轻代没有被销毁进入了老年代,
至于为什么不会OOM是因为这个对象的生命周期很短比如5秒所以每次fullgc都能回收掉
导致对象没有在年轻代被回收的原因有以下情况该
1.对象的内存比年轻代还大,比如对象100兆,年轻代50兆直接放入老年代
2.触发了动态年龄判断放入老年代
3.触发了空间担保机制放入老年代
4.高并发方法执行慢,产生的内存多年轻代装不下此时进行进行youngGC也回收不掉,
是因为方法没有结束是不能回收方法内的gcroot的,那么此时在进来10个个线程这些线程
产生的数据年轻代装不下那么就放入老年代里,当5秒过后这些方法才执行完那么此时的方法
才出栈如果老年代满了是可以回收掉这些垃圾的,如果并发量在高些就会发生OOM,
比如老年代存放的都是2秒后方法才结束的对象当内存满了进行fullgc是回收不掉的因为这些对象
2秒后才能成为垃圾4核8线程
-Dfile.encoding=utf-8
-Xms400m
-Xmx400m
-XX:MetaspaceSize=512m
-XX:SurvivorRatio=8
-Xss512k
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=f:/dev/
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:f:/dev/gc.log情况一 方法执行很快产生的垃圾处理情况
并发量中等但是方法产生的垃圾小
[8并发]:[单个方法耗时40毫秒占用1m]:[是否fullgc false]
并发量中方法产生的垃圾大
[8并发]:[单个方法耗时70毫秒占用2m]:[是否fullgc true]
并发量高但是方法产生的垃圾小
[高并发]:[单个方法耗时40毫秒占用1m]:[是否fullgc true]情况二 方法执行很慢产生的垃圾处理情况
并发量中但是方法产生的垃小
[8并发]:[单个方法耗时1000毫秒占用1m]:[是否fullgc false]
并发量高但是方法产生的垃小
[高并发]:[单个方法耗时1000毫秒占用1m]:[是否fullgc true]
并发量中方法产生的垃大
[8并发]:[单个方法耗时1000毫秒占用2m]:[是否fullgc true]
并发量高方法产生的垃大
[高并发]:[单个方法耗时1000毫秒占用2m]:[OOM]
总结:方法执行慢并且产生的垃圾多那么就很容易频繁fullgc和oom,而高并发就容易让这个条件满足

2.解决高并发并发fullgc

采用线程池控制并发数量,

没控制并发前

控制并发后

方式一线程池

@RestController
@RequestMapping("/userOrder")
public class UserOrderController {ExecutorService executorService = Executors.newFixedThreadPool(2);@RequestMapping("/hello")public String hello(){executorService.submit(()->{//模拟service方法产生100的垃圾,2个线程最高200m垃圾B b = new B(1);});return "success";}
}

方式二Semaphore (推荐)

@RestController
@RequestMapping("/userOrder")
public class UserOrderController {   static Semaphore semaphore = new Semaphore(10,true);@RequestMapping("/hello")public String hello(){try{//请求一个信号semaphore.acquire();B b = new B(1);//释放一个信号semaphore.release();}catch (Exception e){e.printStackTrace();}return "success";}
}

频繁发生fullgc的原因和定位思路相关推荐

  1. 线上频繁发生Full GC 如何调优?如何快速定位OOM、cpu飙升、线程死锁等问题

    文章目录 1. jvm调优命令.工具介绍 ①:jps ②:jmap 查看应用中各实例生成情况 快速定位内存突然飙升导致的OOM异常 查看堆内存使用情况 ③:Jstack 检测线程死锁 快速定位导致cp ...

  2. 【系统缓慢、CPU 100%、频繁Full GC问题】的定位排查思路!

    作者:爱宝贝 https://my.oschina.net/zhangxufeng/blog/3017521 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次 ...

  3. CMS发生FullGc分析

    fullgc的原因 Full GC触发条件: (1)System.gc()方法的调用 该方法不一定执行,但是执行的时候是fullgc. (2)老年代空间不足 老年代空间只有在新生代对象转入及创建为大对 ...

  4. 从一次线上故障思考Java问题定位思路,java初级面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  5. 从一次线上故障思考Java问题定位思路

    问题出现:现网CPU飙高,Full GC告警 CGI 服务发布到现网后,现网机器出现了Full GC告警,同时CPU飙高99%.在优先恢复现网服务正常后,开始着手定位Full GC的问题.在现场只能够 ...

  6. 解决fullgc_CMS发生FullGc分析

    fullgc的原因 Full GC触发条件: (1)System.gc()方法的调用 该方法不一定执行,但是执行的时候是fullgc. (2)老年代空间不足 老年代空间只有在新生代对象转入及创建为大对 ...

  7. 无盘服务器0x00000124,知识分享电脑故障0x00000124导致蓝屏的原因和解决思路-电脑蓝屏原因...

    电脑知识分享电脑故障0x00000124导致蓝屏的原因和解决思路 电脑知识分享 电脑故障0x00000124导致蓝屏的原因和解决思路 电脑知识分享 电脑知识分享:蓝屏的原因和解决思路 蓝屏出错代码的缘 ...

  8. _findnext()调试中断,发生访问错误,错误定位到ntdll.dll

    _findnext()调试中断,发生访问错误,错误定位到ntdll.dll 将 long hFile 改为 intptr_t  hFile 即可. 原因:关于intptr_t C++遍历文件夹下的子目 ...

  9. 计算机主机异常经常蓝屏,计算机频繁发生蓝屏怎么解决

    计算机频繁发生蓝屏怎么解决 计算机运行软件时会出现蓝屏提示应用程序错误 根据蓝屏故障分析,由于计算机新装的系统后出现的蓝屏,系统应该正常,问题可能在安装的软件上或硬件方面引起蓝屏.首先检查软件方法的原 ...

最新文章

  1. Swift 中的内存管理详解
  2. 为什么我不在微信公众号上写文章
  3. Kibana模块——介绍
  4. mybatis,主键返回指的是返回到传入的对象中
  5. 如何成为一名数据中心运营工程师?
  6. ICCV 2017 《Online Video Object Detection using Association LSTM》论文笔记
  7. requests 可以 scrapy 不行_python学习教程,B站博人传评论数据抓取 scrapy
  8. case when语句中加上and or的处理方式
  9. c++ 高效解析url算法
  10. Web页面请求的历程(从应用层到链路层)
  11. cornerstone 使用
  12. 我的世界f服务器自定义皮肤,我的世界服务器皮肤指令
  13. 使用C语言打印出一个菱形
  14. AD14简明使用教程(同样试用于手工制板)
  15. 用 js判断 一个数是否是素数(质数)_js 基础算法题(二)
  16. 关于如何阅读英文文献(干货详解)
  17. 计算机桌面搜狗输入图标不见了怎么办,电脑上搜狗输入法状态栏突然不见了怎么办 如何找到电脑中所失去的输入法...
  18. 花生地铁WiFi运营商称“上亿用户资料泄露”系杜撰
  19. 解决win10计算机管理中没有本地用户和组
  20. 微信记录恢复助手官方版

热门文章

  1. Pixel Stream 源码分析
  2. Altera_MAX_Plus_II_v10.2破解软件下载安装
  3. 极光推送 android6.0,极光推送Unity-Android-API
  4. 最高月薪13K!95年设备小哥结束工厂“倒班生活”,三个月转行开启技术人生!
  5. Flutter——头像上传功能,实现照片选择及裁剪
  6. 【Windows】【Audio】Windows 11 声音配置
  7. 快来看,SATA秘籍惊现江湖!!!
  8. 从 0 到 1 教你在亚马逊云科技中部署动态网站 Typecho 系统
  9. jin tian xin qing gen tian qi yi yang!
  10. fiddler网络限速技巧