HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
  • 《LearnJavaToFindAJob》

    • 导读

    • 【初级】6~12k档

    • 【中级】12k-26k档

      • JVM进阶

      • Java进阶

        • ConcurrentHashMap面试题
        • CopyOnWriteArrayList的实现原理
        • HashMap的put过程是怎么样的?
        • IO模型有哪些?
        • ThreadLocal的原理
        • valueOf、(String)强转有什么区别?
        • 为什么在lambda中使用的局部变量必须是final或有效final
        • 你知道如何更新缓存吗?如何保证缓存和数据库双写一致性?
        • 八股文之ReentrantLock
        • 分布式事务
        • 如何保障生产端消息投递成功?
        • 如何手动触发全量回收垃圾,如何立即触发垃圾回收
        • 数据库连接池为什么要使用ThreadLocal?
        • 线程池中多余的线程是如何回收的
        • 谈谈你对AQS的理解
        • 谈谈你对CAS的理解
        • util.concurrent的理解
        • 高并发下如何保证接口的幂等性?
      • MySQL

      • 中间件

      • 算法

      • 高阶

    • 【高级】26k+档

    • 大厂面试题

    • 求职建议

    • 面经

  • LearnJavaToFindAJob
  • 【中级】12k-26k档
  • Java进阶
码农阿雨
2022-06-02
目录

如何手动触发全量回收垃圾,如何立即触发垃圾回收

# A&Q 如何手动触发全量回收垃圾,如何立即触发垃圾回收?

有一次被问到了这个问题,初学Java的都知道,Java是一门自动垃圾回收的语言,开发者不需要关注垃圾回收,所以这个问题的答案就是:我们无法决定Java何时进行垃圾回收,但是可以建议Java进行垃圾回收,沿着这个问题,面试官还问了JavaGC的3个细节:

  • Java是如何判断对象是否需要被回收的?有什么算法
  • Java是如何回收的?有什么垃圾回收算法?
  • 有什么垃圾收集算法?

还好我对JavaGC这一块比较熟悉,原来重头戏是这些~

这三个小问题不展开了,有兴趣的可以看一下:

一文带你明白Java垃圾回收 (opens new window)

小朋友你是否有很多问号?

回到这个问题上面:

垃圾回收的特征是什么?

  • 垃圾回收机制只负责回收堆内存的对象,不会回收任何物理资源(例如数据库连接、网络IO等资源)
  • 程序无法精确控制垃圾回收的运行,垃圾回收会在合适的时候进行。(有 引用计数算法、可达性分析算法 判断对象是否需要回收)
  • 在垃圾回收机制回收任何对象之前,总会先调用它的finalize()方法,该方法可能使该对象重新复活(让一个引用变量重新引用该对象),从而导致垃圾回收机制取消回收。

如何立即触发垃圾回收?

程序员唯一能做的就是通过调用 System. gc (Runtime.getRuntime().gc() 也行)方法来“建议”执行垃圾收集器,但其 是否可以执行,什么时候执行却都是不可知的。

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
上次更新: 2025-02-21 06:04:57
最近更新
01
《LeetCode 101》
02-21
02
IDEA、Golang、Pycharm破解安装
02-21
03
《LeetCode CookBook》
02-21
更多文章>
Theme by Vdoing | Copyright © 2020-2025 码农阿雨
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式