jvm调优要了解的部分知识点 简述归纳

目录

1.堆

2.栈

3.主流的jvm:HotSpot【了解一个就行了】和JRockit

4.HotSpot也叫Sun JVM,了解两种gc方式:CMS和G1

5.young gc【Minor GC】 和full gc【Major GC】 

6.jvm逃逸分析 

   【基于逃逸分析的优化】栈分配、同步消除、分离对象或标量替换

7.传统的堆结构:新/老生代、幸存者区From/To【简称A/B】

8.cms gc

工作原理 

9.G1   

10.强引用 软引用 弱引用 虚引用

11.Minor GC、Young GC、Full GC、Old GC、Major GC、Mixed GC【只在G1出现】区别。


1.堆

2.栈

3.主流的jvm:HotSpot【了解一个就行了】和JRockit

4.HotSpot也叫Sun JVM,了解两种gc方式:CMS和G1

5.young gc【Minor GC】 和full gc【Major GC】 

新生代内存不够了,触发young gc

老年代的满了或内存不够【比如1.cms gc转移大对象或者幸存者到老年代因内存不够导致转移失败    。2.gc自身线程也会占一定内存,内存不够】,就会触发full gc

6.jvm逃逸分析 

看对象是否可能被外部所用,是则可能逃逸,否则不会逃逸,交给栈省堆内存

   【基于逃逸分析的优化】栈分配、同步消除、分离对象或标量替换


7.传统的堆结构:新/老生代、幸存者区From/To【简称A/B】

8.cms gc

优点低stw,缺点 老年代内存碎片化,gc标记时内存不够引起full gc

工作原理 

第一个月,若干个对象【0级】在新手村出生了,山村老妖cms gc每隔一段时间会来要祭品【jvm逃逸分析后干掉无效对象】,新手村的幸存者跑到幸存区A【躲过一次gc的屠杀=等级+1】,老妖屠了新手村。

第二个月【每隔一段时间】,老妖gc又来了新手村要祭品,新的幸存者【等级+1】跑到了幸存区B。老妖屠了新手村,来到了A区要祭品,A区的幸存者跑到B区躲避【等级+1】,老妖屠了A区。此时新手村和A区都是空的。

第三个月【每隔一段时间】,老妖gc又来了新手村要祭品,新的幸存者【等级+1】跑到了幸存区A。老妖屠了新手村,来到了B区要祭品,B区的幸存者跑到A区躲避【等级+1】,老妖屠了B区。此时新手村和B区都是空的。

........................

第x个月【每隔一段时间】,老妖gc干着一样的事情。但不同的是,出现了4种对象进入老年代的情况。

都可以通过jvm参数设置生效,第四点jdk1.8默认配置开启


新手村出生了一个又高又壮的对象【大对象就是需要大量连续内存空间的对象(比如:字符串、数组)】,直接跑到了老年代。

在幸存区里,gc看到有些对象的等级已经达到了某个阙值【默认为15级,CMS收集器默认6级,不同的垃圾收集器会略微有点不同】,让它们去老年代了

在幸存区里,jvm制定了规则【从1级到n级的所有对象的大小超过了该幸村区的50%,n级及以上的对象去老年代】

老年代区的自保机制:老年区的剩余内存,

如果比所有的年轻代【新手村+幸存区+垃圾对象】大,触发年轻gc【young gc/minor gc】,反之,再判断历次minor gc后,进入老年代的对象的平均大小 如果比该内存小,触发年轻gc【young gc/minor gc】,反之,触发fullgc。

以上第二判断触发年轻gc【young gc/minor gc】后,如果老年代的内存不够存放即将进入老年代的对象,就会触发 full gc,触发full gc 后也没足够空间放 年轻gc后活下来的对象,就会发生OOM异常


9.G1   

对于所有区域,分成多个小模块,所有模块都可以是新/老生代、幸存者区,优点不会产生内存碎片化 jdk9以后自动配置                

10.强引用 软引用 弱引用 虚引用

如何回收强引用 -------比如new了之后就是强引用,主动gc失败,设置对象为null,再主动gc成功

如何回收软引用  ——内存不足时会回收

最好不要主动gc,让jvm自动管理内存

11.Minor GC、Young GC、Full GC、Old GC、Major GC、Mixed GC【只在G1出现】区别。


个人学习总结,便于将来复习。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值