做网站要哪些架包,MIUI官方网站开发版,羽毛球赛事有哪些,怎么制作网页页面OOM问题排查#xff1a;
1、top命令#xff1a;查看cpu和内存的使用情况。
2、jstat命令#xff1a;查看YGC和FGC情况#xff0c;一般都是老年代不够用。导致OOM
3、jmap命令#xff1a; 查看哪个类的实例过多,以每个类占用多少了内存。4、jstack 查看线程与线程之间的阻… OOM问题排查
1、top命令查看cpu和内存的使用情况。
2、jstat命令查看YGC和FGC情况一般都是老年代不够用。导致OOM
3、jmap命令 查看哪个类的实例过多,以每个类占用多少了内存。4、jstack 查看线程与线程之间的阻塞状态。dump文件也是通过这个命令。这是参数不一样。JVM调优的出发点
1、观察YGC的频率和耗时
频率过高可能是E和S的容量不够2、观察FGC的频率和耗时
频率过高说明老年代的对象得不到回收。
是不是有内存泄露Gc后老年代没有变化
老年代的内存空间不够大查看每次回收后老年代的空间变化。
老年代大对象的【担保策略】担保策略就是指下面4个点。备注Java对象进入老年代的四种方式
1、minor gc之后survivor区空间不能容量存活对象
2、对象达到年龄阈值进入老年代
3、大对象进入老年代
4、动态年龄判断担保策略4种分派方式跳转
一、什么是TLAB
TLAB用来解决内容分派的问题
1、指针碰撞一半是已分派一半是未分派缺点产生很多碎片。产生很多不连续的空闲空间。
2、空闲列表机制在碰撞的基础上将不连续的空间通过一个空间列表记录起来。每次分派对象时优先遍历空闲列表来
分配合适的对象。
3、高并发下需要用到互斥锁这就大大折扣了空闲列表的分派速度。为了解决内容分配效率问题引入了TLAB的概念
4、TLAB是Thread Local Allocate buffer的缩写结合EMA期望算法TLAB 是线程私有的线程初始化的时候会创建并初始化 TLAB缺点TLAB 要解决的问题很明显尽量避免从堆上直接分配内存从而避免频繁的锁争用。引入 TLAB 后会有内
存孔隙问题还可能影响 GC 扫描性能
总结开发中能使用局部变量的就不要使用在方法外定义。