当前位置: 首页 > news >正文

OOM问题排查+Jvm优化

OOM问题排查:

1、top命令:查看cpu和内存的使用情况。
2、jstat命令:查看YGCFGC情况,一般都是老年代不够用。导致OOM
3、jmap命令: 查看哪个类的实例过多,以每个类占用多少了内存。4、jstack  查看线程与线程之间的阻塞状态。dump文件也是通过这个命令。这是参数不一样。

JVM调优的出发点:

1、观察YGC的频率和耗时
频率过高:可能是ES的容量不够,2、观察FGC的频率和耗时
频率过高:说明老年代的对象得不到回收。
是不是有内存泄露:Gc后老年代没有变化
老年代的内存空间不够大:查看每次回收后老年代的空间变化。
老年代大对象的【担保策略】:担保策略就是指下面4个点。备注:Java对象进入老年代的四种方式
1、minor gc之后,survivor区空间不能容量存活对象
2、对象达到年龄阈值进入老年代
3、大对象进入老年代
4、动态年龄判断

担保策略:4种分派方式跳转

一、什么是TLAB

TLAB:用来解决内容分派的问题
1、指针碰撞,一半是已分派,一半是未分派,缺点:产生很多碎片。产生很多不连续的空闲空间。
2、空闲列表机制:在碰撞的基础上,将不连续的空间,通过一个空间列表记录起来。每次分派对象时,优先遍历空闲列表,来
分配合适的对象。
3、高并发下,需要用到互斥锁,这就大大折扣了,空闲列表的分派速度。为了解决内容分配效率问题,引入了TLAB的概念
4TLABThread Local Allocate buffer的缩写,结合EMA期望算法,TLAB 是线程私有的,线程初始化的时候,会创建并初始化 TLAB缺点:TLAB 要解决的问题很明显,尽量避免从堆上直接分配内存从而避免频繁的锁争用。引入 TLAB 后,会有内
存孔隙问题,还可能影响 GC 扫描性能
总结:开发中能使用局部变量的,就不要使用在方法外定义。
http://www.lryc.cn/news/239076.html

相关文章:

  • 链表:C++实现
  • 使用JMX监控ZooKeeper和Kafka
  • 蓝桥等考C++组别七级008
  • sam和mobilesam导出预处理的onnx
  • 开源与闭源:大模型发展的双重走向
  • c# 逆变 / 协变
  • electron使用better-sqlite3打包失败(electron打包有进程没有界面)
  • 2.6文件服务器
  • 【C++ 学习 ㊴】- 详解 C++ 的 I/O 流
  • js算法面试题(附答案)
  • 2023 年戴森设计大奖得主是谁?给大楼降温、争取救援机会
  • 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性
  • 【word技巧】Word制作试卷,ABCD选项如何对齐?
  • OpenHarmony 4.1计划明年Q1发布, 5.0预计Q3发布
  • 蓝桥等考C++组别八级002
  • 秋招JAVA面经总结
  • Postgresql源码(116)提升子查询案例分析
  • CNP实现应用CD部署
  • kubeadm join 192.168.10.16:6443 --token xxx报错Failed to request cluster-info
  • 车载以太网-传输层-TCP
  • java:简单入门定时任务的几种方式Timer、Quartz、Spring Task
  • 木子-前端-方法标签属性小记(普通jsp/html篇)2023~2024
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(十七)
  • 使用netty实现WebSocket协议通信
  • uniapp开发小程序,包过大解决方案
  • Go语言中string与byte转换
  • 机器学习8:在病马数据集上进行算法比较(ROC曲线与AUC)
  • 70. 爬楼梯 --力扣 --JAVA
  • 体感互动游戏VR游戏AR体感游戏软件开发
  • 计算3个点的6种分布在平面上的占比