技术与人生JVM · Java虚拟机原理 · JVM上语言·框架· 生态系统Java虚拟机

3.常见的垃圾回收器及算法

2019-08-10  本文已影响3人  进读万卷书
1.哪些变量引用不能回收

被GC Roots引用的变量不能被回收,GC Roots有方法的局部变量,类的静态变量。

2.不同的引用类型
        //强引用
        User user = new User();

        //软引用
        SoftReference<User> softUser = new SoftReference<User>(new User());

        //弱引用
        WeakReference<User> weakUser = new WeakReference<>(new User());
3.新生代的复制算法

上面的复制算法,优点是解决了内存碎片问题,缺点内存利用率太低,只有50%。那么JAVA是怎么优化的呢?

已经把内存的使用率提高到90%了。

4.什么时候对象会进入老年代
5.老年代空间分配担保规则

1.minor gc 之前,会判断老年代剩余内存大小是否大于年轻代总内存大小。因为有可能minor gc后所有对象都存活。
-- 如果老年代剩余内存大于年轻代总内存大小,直接进行minor gc。
-- 如果老年代剩余内存小于年轻代总内存大小,则判断-XX:HandlePromotionFailure有没设置。没设置直接进行Full gc
2.设置了-XX:HandlePromotionFailure参数
-- 判断老年代大小是否大于年轻代minor gc后进入老年代的平均大小。
-- 如果小于的话,则进行Full GC
3.如果大于的话,则进行minor gc,当minor gc后,会有以下几种情况。

6.老年代使用什么回收算法
7.垃圾回收器的简单介绍
8.JVM调优的目的

尽可能让对象者在新生代分配和回收,尽量别让太多对象频繁地进入老年代,避免频繁的老年代回收,分配充足的内存给新生代,尽量避免新生代频繁回收。

上一篇下一篇

猜你喜欢

热点阅读