一 点睛

当一个对象失去引用后,系统何时调用它的finalize()方法对它进行资源清理,何时它可以变成不可达状态,系统何时回收它占有的内存,对于程序完全透明。程序只能控制一个对象不再被任何引用变量引用,不能控制它何时被回收。

程序可以强制系统进行垃圾回收——这种强制只是通知系统进行垃圾回收,但系统是否进行垃圾回收依然不能确定。大部分时候,程序强制垃圾回收后总是有一些效果

强制系统垃圾回收有如下两个方法:

  • 调用System类的gc()静态方法:System.gc()

  • 调用Runtime对象的gc()实例方法:Runtime.getRuntime().gc()

二不强制进行垃圾回收代码

1 代码

public class GcTest
{public static void main(String[] args){for (int i = 0 ; i < 1; i++){new GcTest();}}public void finalize(){System.out.println("系统正在清理GcTest对象的资源...");}
}

2 运行

程序运行无任何结果。

3 说明

程序创建了1个匿名对象,这个对象在创建之后立即进入可恢复状态,等待系统回收,但直到程序退出,系统依然不能回收该资源。

三 强制垃圾回收代码

1 代码

public class GcTest
{public static void main(String[] args){for (int i = 0 ; i < 1; i++){new GcTest();// 下面两行代码的作用完全相同,强制系统进行垃圾回收// System.gc();Runtime.getRuntime().gc();}}public void finalize(){System.out.println("系统正在清理GcTest对象的资源...");}
}

2 运行

系统正在清理GcTest对象的资源...

3 说明

该打印说明强制垃圾回收起了作用。

命令行执行如下语句后,可以看到垃圾回收前、回收后的内存占用对比。

E:\Java\IDEA_Java\out\production\IDEA_Java>java -verbose:gc GcTest
[GC (System.gc())  2621K->760K(251392K), 0.0009908 secs]
[Full GC (System.gc())  760K->670K(251392K), 0.0040659 secs]
系统正在清理GcTest对象的资源...

运行结果显示了程序强制垃圾回收的效果,但这种强制只是建议系统立即进行垃圾回收,系统完全有可能并不立即进行垃圾回收,垃圾回收机制也不会对程序的建议完全置之不理;垃圾回收机制会在收到通知后,尽快进行垃圾回收。

Java的垃圾强制回收相关推荐

  1. java判断垃圾已回收_[译] 现代垃圾回收

    关于 Go 语言最新的垃圾回收器(garbage collector),我最近阅读了许多篇赞扬它的文章,但是它们都让我将信将疑,其中的不少来自 Go 语言的官方团队博客.他们像是暗示着在垃圾回收领域已 ...

  2. JAVA CMS垃圾回收器回收机制

    CMS concurrent marks sweep 并行标记清除垃圾回收机制.此篇文章是根据众多网上资料总结的关于CMS垃圾回收器的相关知识点.便于个人总结和回忆. 垃圾回收器类型 1.串行回收,S ...

  3. java怎么强制回收某个对象_4、如何强制垃圾回收一个对象?(java)

    4.如何强制垃圾回收一个对象?(java) 检举 | 2008-10-25 19:12 提问者: 路瓶子 | 浏览次数:2956次 4.如何强制垃圾回收一个对象? A)垃圾回收不能被强制执行. B)调 ...

  4. JAVA确保垃圾回收后结束程序_Java垃圾回收机制(转)

    1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象:而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾.JVM的 ...

  5. java gc回收堆还是栈_浅析JAVA的垃圾回收机制(GC)

    1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 注意:垃圾回 ...

  6. JAVA虚拟机垃圾回收机制和JAVA排错三剑客

    一.Java虚拟机逻辑回收机制 1.Java垃圾回收器 Java垃圾回收器是Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之一,为应用程序提供内存的自动分配(Memory Al ...

  7. Java复习-对象的回收与垃圾的回收

    Java的回收机制很神奇,垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(比如数据库的连接,网络IO的连接) 程序无法精确控制垃圾的回收运行,垃圾回收会在适合的时候进行,当对象永久性的失去 ...

  8. java jvm垃圾回收算法_深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法

    本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 喜欢的话麻烦点下Star哈 文章将同步到我的个人博客: www.how ...

  9. 【Java】Java的垃圾回收机制小结

    文章目录 1. Java的垃圾回收机制? 1.1 Java的引用类型 1.2 哪些内存需要回收? 1.3 怎么定义垃圾? 1.4 怎么回收垃圾? 2. JVM一次完整的GC流程? 3.触发GC之后,会 ...

最新文章

  1. 编写矩形类 计算矩形面积
  2. 批量下载ABAP程序和表结构
  3. gbdt 回归 特征重要性 排序_gbdt、xgb、lgb、cat面经整理——from牛客
  4. OpenShift Security (12) - 用 RHACS 管理容器之间的网络访问策略
  5. SQL Server数据库事务处理详解(MSDN网上资源)
  6. vue入门--简单嵌套路由的一个路径小问题
  7. 获取手机IMEI和UID
  8. Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (高级)
  9. OkHttp Interceptors(二)
  10. dojo省份地市级联之省份封装类(一)
  11. Oracle数据库连接池原理,数据库连接池的原理及实现
  12. JS中更改样式属性或者更改类名
  13. 文件外链PHP,php如何去除外链
  14. CTF easycap Banmabanma
  15. [LOCAL] 画画图(结论 + DP + 常数分析) | 错题本
  16. python mongdb 和 mysql简单使用
  17. 开机要按F1的解决方法
  18. python游戏背景音乐循环播放_9.2 播放背景音乐_师傅带徒弟学:Python视频课程之游戏开发引擎Cocos2d-Python_Python视频-51CTO学院...
  19. mysql5.7应该导什么包_限定盲盒!只有快递小哥可以拆的“战马空投箱”…到底什么来头?...
  20. 响应式布局详解(优缺点)

热门文章

  1. python 安装tensorflow
  2. 电脑桌面文件找不到了?教你找回误删文件的详细方法
  3. 量子通信和量子计算机 龙头股,量子通信概念股龙头股有哪些?量子通信概念股一览...
  4. CANdb++安装及使用
  5. 斐波那契数列 递归算法
  6. 贝塞尔曲线介绍及一阶、二阶推导
  7. Java除法运算(保留小数)
  8. Elasticsearch查询索引设置
  9. css float布局
  10. 前后端交互详解(建议收藏)