17-垃圾回收相关概念

目录

一、System.gc()的理解

显示触发FullGC

二、内存溢出和内存泄漏

Javadoc中对于OutOfMemoryError的解释是,没有空闲内存,并且垃圾收集器也无法提供更多的内存

2、内存泄漏

只有对象不再被应用程序使用到了,但是GC又不能回收他们的情况,才叫内存泄漏

三、Stop the World

1、什么是 stop the word ?

四、垃圾回收的并行和并发

1、并发和并发

2、垃圾回收的并行和并发

五、安全点与安全区域

1、什么是安全点?

程序执行的时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为安全点(SafePoint)

SafePoint 的选择很重要

2、安全区域

安全区域是指在一段代码片段中,对象的引用关系不会发生变化,在这个区域中的任何位置开始GC都是安全的

六、强引用(不可回收)

七、软引用(Soft Reference 内存不足即回收)

软引用是用来描述一些还有用,但非必须的对象。

java 复制代码
        //创建对象,建立软引用
//        SoftReference<User> userSoftRef = new SoftReference<User>(new User(1, "songhk"));
        //上面的一行代码,等价于如下的三行代码
        User u1 = new User(1,"songhk");
        SoftReference<User> userSoftRef = new SoftReference<User>(u1);
        u1 = null;//取消强引用

八、弱引用(Weak Reference 发现即回收)

弱引用也是用来描述那些非必需的对象,只被弱引用关联的对象只能生存到下一次垃圾收集发生为止

九、虚引用(Phantom Reference 对象回收跟踪)

也称为"幽灵引用"或者"幻影引用",是所有引用类型中最弱的一个

一个对象是否有虚引用的存在,完全不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它和没有引用几乎是一样的,随时可能被垃圾回收器回收。

为一个对象设置虚引用的唯一目的在于跟踪垃圾回收过程,比如:能在这个对象被收集器回收时收到一个系统通知

十、终结器引用(Final Reference)

相关推荐
阿龟在奔跑11 小时前
引用类型的局部变量线程安全问题分析——以多线程对方法局部变量List类型对象实例的add、remove操作为例
java·jvm·安全·list
王佑辉12 小时前
【jvm】方法区常用参数有哪些
jvm
王佑辉12 小时前
【jvm】HotSpot中方法区的演进
jvm
Domain-zhuo12 小时前
什么是JavaScript原型链?
开发语言·前端·javascript·jvm·ecmascript·原型模式
Theodore_10221 天前
7 设计模式原则之合成复用原则
java·开发语言·jvm·设计模式·java-ee·合成复用原则
我是苏苏1 天前
Web开发:ORM框架之使用Freesql的DbFrist封装常见功能
java·前端·jvm
天草二十六_简村人2 天前
Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化
java·jvm·数据库·mongodb·阿里云·微服务·云计算
老码沉思录2 天前
Android开发实战班 - 数据持久化 - Room 数据库应用
android·jvm·数据库
起名字真南2 天前
【C++】深入理解 C++ 中的继承进阶:多继承、菱形继承及其解决方案
java·jvm·c++·chatgpt·aigc
偶尔。5352 天前
JVM垃圾回收算法详解
jvm