博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学习笔记】 唐大仕—Java程序设计 第5讲 深入理解Java语言之5.4 对象清除与垃圾回收...
阅读量:5049 次
发布时间:2019-06-12

本文共 841 字,大约阅读时间需要 2 分钟。

/*** 对象清除与垃圾回收* @author cnRicky* @date 2018.11.10*/

对象清除与垃圾回收

对象清除
  • 我们知道:new创建对象
  • 那么如何销毁对象?
  • Java中是自动清除
    • 不需要使用delete等方法人为销毁它
对象的自动清除
  • 垃圾回收(garbage collection)

  • 对象回收是由Java虚拟机的垃圾回收线程来完成的

  • 为什么系统知道对象是否为垃圾?

    • 任何对象都有一个引用计数器,当其值为0时,说明该对象可以回收
System.gc()方法
  • System.gc()方法
  • 它是System类的static方法
  • 它可以要求系统进行垃圾回收
  • 但它仅仅只是“建议(suggest)”
finalize()方法
  • Java中没有“析构方法(destructor)”

  • 但Object的finalize()有类似功能

    • 系统在回收时会自动调用对象的finalize()方法
    • protected void finalize() throws Throwable{}
  • 子类的finalize()方法

    • 可以在子类的finalize()方法释放系统资源
    • 一般来说,子类的finalize()方法中应该调用父类的finalize()方法,以保证父类的清理工作能够正常进行
try-with-resources
  • 由于finalize()方法的调用时机并不确定,所以一般不用finalize()
  • 关闭打开文件、清除一些非内存资源等工作需要进行处理
  • 可以使用try-with-resources语句(JDK1.7 以上)
  • 对于实现了java.lang.AutoCloseable的对象
  • try( Scanner in = new Scanner( ... ) ){ ...... }
  • 会自动调用其close()方法,相当于
  • finally{ in.close(); }

转载于:https://www.cnblogs.com/dreamcoding/p/9940088.html

你可能感兴趣的文章
UVA11524构造系数数组+高斯消元解异或方程组
查看>>
排序系列之——冒泡排序、插入排序、选择排序
查看>>
爬虫基础
查看>>
jquery.lazyload延迟加载图片第一屏问题
查看>>
OGRE 源码编译方法
查看>>
上周热点回顾(10.20-10.26)
查看>>
web.xml中listener、 filter、servlet 加载顺序及其详解
查看>>
前端chrome浏览器调试总结
查看>>
数据库连接
查看>>
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
极客前端部分题目收集【索引】
查看>>
第四天 selenium的安装及使用
查看>>
关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)...
查看>>
KMPnext数组循环节理解 HDU1358
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>
Inoodb 存储引擎
查看>>
数据结构之查找算法总结笔记
查看>>
Linux内核OOM机制的详细分析
查看>>