Java垃圾回收机制知识点总结

1.Java垃圾回收机制是Java语言的重要功能之一。当程序创建对象,数组等引用类型对象时,系统会自动在内存区为之分配一块内存,对象就保存在这块内存区内,当这块内存不再被任何变量引用时,这块内存就成为了垃圾,等待垃圾回收机制进行回收。

2.Java 垃圾回收机制的特征:

(1)垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连接、网络连接、IO流等资源)。

(2)程序无法精准控制垃圾回收的运行,垃圾回收会合适的时候进行。当对象永久性地失去引用后,系统就会在合适的时候回收它所占得内存。

(3)在垃圾回收机制回收对象之前,总会先调用它的finalize()方法。

(4)将对象的引用赋值为null,也不能释放掉该对象所占的内存,赋值为null,只是说明该对象可以被回收了,但是具体什么时候回收是程序员无法控制的,有jvm决定的;

3.Java Object的finalize()方法:

     Java 允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。

注:使用该方法可能使将要回收的对象重新复活(让一个引用变量重新引用该变量),从而导致垃圾回收机制取消回收。

4.强制垃圾回收的两种方式:

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

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

注:1)仅仅是通知系统进行垃圾回收,但系统是否进行垃圾回收依然不确定。大部分时候,程序强制系统垃圾回收后总会有一些效果。

     2)在《java虚拟机》一书中明确讲了,释放掉占据的内存空间是由gc完成,但是程序员无法明确强制其运行,该空间在不被引用的时候不一定会立即被释放,这取决于GC本身,无法由程序员通过代码控制。

5.对象的四种引用方式:

(1)强引用(StrongReference)    一个对象被一个或一个以上的引用变量所引用。

(2)软引用(SoftReference)       内存不足时可能会被回收

(3)弱引用(WeakReference)      不管内存是否足够,总会回收该对象所占用的内存

(4)虚引用(PhantomReference)  完全类似于没有引用,虚引用不能单独使用,虚引用必须和引用队列联合使用,主要用于跟踪对象被垃圾回收的状态。

6.Java回收机制的优缺点:

优点:

(1)可以很好的提高编程效率,在一个没有垃圾收集机制的语言下编程,程序员还要花时间来解决难以捉摸的内存问题;

(2)保护程序的完整性,因为程序员不可能因为失误错误地释放内存而导致jvm崩溃;

缺点:

(1)Java回收机制的开销影响程序的运行。

Java垃圾回收机制知识点总结相关推荐

  1. JAVA垃圾回收机制GC之我姐是明星

    JAVA垃圾回收机制GC(Garbage Collection) 工作面试老伙伴之java垃圾回收机制 什么是GC,为什么要GC(我的明星老姐) 判断垃圾(找到不常穿的衣服) A 引用计数算法 B 可 ...

  2. java垃圾回收机制_笔记 | Java垃圾回收机制

    本文经授权转载自程序员杂货铺(ID:speakFramework) 垃圾回收 最近上海的小伙伴是不是要被强垃圾分类搞疯了???哈哈哈哈 上海是个走在前列的城市啊,不光骑自行车闯红灯要被罚钱,垃圾不分类 ...

  3. Java垃圾回收机制(Garbage Collection)

    引用博客地址:http://www.cnblogs.com/ywl925/p/3925637.html 以下两篇博客综合描述Java垃圾回收机制 第一篇:说的比较多,但是不详细 http://www. ...

  4. java垃圾回收机制_JVM的垃圾回收机制——垃圾回收算法

    一.Java垃圾回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行.在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者 ...

  5. 36.JVM内存分哪几个区,每个区的作用是什么、如和判断一个对象是否存活、java垃圾回收机制、垃圾收集的方法有哪些、java类加载过程、类加载机制、双亲委派、Minor GC和Major GC

    36.JVM内存分哪几个区,每个区的作用是什么? 37.如和判断一个对象是否存活?(或者GC对象的判定方法) 38.简述java垃圾回收机制? 39.java中垃圾收集的方法有哪些? 40.java类 ...

  6. 深入理解 Java 垃圾回收机制

    转载自 http://www.cnblogs.com/andy-zcx/p/5522836.html 深入理解 Java 垃圾回收机制 一:垃圾回收机制的意义 java  语言中一个显著的特点就是引入 ...

  7. java垃圾回收机制的理解

    Java垃圾回收机制算法 标记----清除算法 复制算法 标记----整理算法 分代收集算法 为什么要进行垃圾回收 因为当一个对象的引用不可达,或者一个对象没有任何引用指向它,那么它就没有必要在内存中 ...

  8. 【Java】Java垃圾回收机制

    Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给 ...

  9. Java深度历险(四)——Java垃圾回收机制与引用类型

    Java语言的一个重要特性是引入了自动的内存管理机制,使得开发人员不用自己来管理应用中的内存.C/C++开发人员需要通过malloc/free 和new/delete等函数来显式的分配和释放内存.这对 ...

  10. axis2 webService开发 附深入理解 Java 垃圾回收机制

    相关文章: axis web服务(axis2安装和eclipse.tomcat结合开发) axis2 webService开发 axis2 webService开发(打包aar文件) 使用Axis2开 ...

最新文章

  1. hdu 1879 继续畅通工程
  2. html实战例子: 在title左侧添加logo
  3. ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(..
  4. 5-4 是否同一棵二叉搜索树 (25分)
  5. 家居市场2015惨淡收官 智能家居迎风而起前景广阔
  6. 微信开发必看,使用.Net Core 开发微信跨平台应用
  7. oracle 网关下载,oracle透明网关访问sqlserver2000
  8. 【CSDN】-官方插件推荐懒人必备神器
  9. zenmap工具说明及常用参数解释
  10. python2 python3共存导致conda报错_Windows运维之Windows10下配置Python2和Python3共存 并用anaconda实现方便的包管理...
  11. proxmox 控制台无法连接_Proxmox VE 5的SPICE控制台和虚拟机声音设置
  12. 机房管理降本增效:Hightopo如何将可视化监控做到行业高阶?
  13. php开发数独,数独解题小程序实现代码
  14. 医院管理系统数据库,课程设计,SQLserver,纯代码设计
  15. qt触摸屏隐藏鼠标指针
  16. 阿里云Centos7修改22默认端口
  17. vue中企业微信 wx.onHistoryBack详解:
  18. 计算机专业可以报初级经济师吗,初级经济师值得考吗
  19. 结对第二次—文献摘要热词统计及进阶需求
  20. DB2密码过期的解决办法-创建新密码

热门文章

  1. 两种土壤类型数据的简介、下载教程
  2. PN序列的产生以及相关函数的计算
  3. keil系列 魔法棒(目标选项)配置、编译工具ARMCC
  4. Glide 圆角+居中裁剪centerCrop冲突问题
  5. pycharm-perl脚本
  6. 二维dtw算法matlab实现,下载的用MATLAB实现的DTW算法,不会用,跪求大神帮忙
  7. 线性时间选择—寻找第k小的数(分治算法)
  8. MLDN Java学习笔记(4)
  9. vb实现随机生成100个整数,将其中的奇数由大到小排序,偶数由小到大排序,找出其中所有素数并求和
  10. 三级数据库知识点总结