zoukankan      html  css  js  c++  java
  • 41. 如何手动触发全量回收垃圾,如何立即触发垃圾回收

    垃圾回收机制具有的特征

    • 垃圾回收机制只负责回收堆内存的对象,不会回收任何物理资源(例如数据库连接、网络IO等资源)
    • 程序无法精确控制垃圾回收的运行,垃圾回收会在合适的时候进行。当对象永久地失去引用后,系统就会在合适的时候回收它所占的内存
    • 在垃圾回收机制回收任何对象之前,总会先调用它的finalize()方法,该方法可能使该对象重新复活(让一个引用变量重新引用该对象),从而导致垃圾回收机制取消回收。

    对象在内存中的状态

    • 可达状态:当一个对象被创建后,若有一个以上的引用变量引用它,则这个对象在程序中处于可达状态。
    • 可恢复状态:如果程序中某个对象不再有任何引用变量引用它,它就进入了可恢复状态。
    • 不可达状态:当对象与所有引用变量的关联都被切断,且系统已经调用所有对象的finalize()方法后依然没有使对象变成可达状态,那么这个对象将永久的失去引用,最后变成不可达状态。
     public static void main(String[] args) {
            String a = new String("Grim");
            a = new String("Mjx");
    }

    第一句对象"Grim"为可达状态,执行第二句之后"Mjx"是可达状态。但是"Grim"这个字符串对象变成了可恢复状态。

    强制触发垃圾回收方法

    • 调用System类的gc()静态方法:System.gc();
    • 调用Runtime对象的gc()实例方法:Runtime.getRuntime().gc();
  • 相关阅读:
    如何使得VIM显示行号
    mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication的解决方法
    重启PHP命令
    一个方便的shell命令,查看软件安装目录
    Centos中安装vim
    centos yum安装mysql
    nginx安装php和php-fpm
    大数据实时计算工程师/Hadoop工程师/数据分析师职业路线图
    vim命令
    linux 下MySQL的安装
  • 原文地址:https://www.cnblogs.com/GrimMjxCl/p/9471797.html
Copyright © 2011-2022 走看看