Java中垃圾回收功能

作者:未知    文章来源:www.jspcn.net

发布日期:2005年01月19日

Java(TM) 编程语言的一个真正强有力的特征是它的内存管理机制。Java 虚拟机依据 new 操作符的请求动态地为对象在堆中分配空间。

其他语言将释放对象的重担都放到了程序员身上,当对象不再使用时,程序员通过 delete 这样的操作符或者是 free()这样的库函数来释放对象。而Java编程语言不为程序员提供这样的功能,因为Java运行环境会自动收回那些没有引用与之相连的对象所占的内存。这种内存回收的过程就叫 垃圾回收。

垃圾回收包括:(1) 为每一个对象保存与之相连的所有引用的数目;(2) 定期回收那些引用数目为零的对象所占的内存。垃圾回收是一个古老的计算技术,在一些计算机语言和文本编辑器这样的环境中都用到过这中技术。

请看下面的方法:

...

void aMethod() {

Dog dog = new Dog();

// do something with the instance dog

...

}

...

dog 是方法 aMethod() 中的一个局部变量,在方法调用时自动分配了内存。new 创建了 Dog 的一个实例,其内存地址存放在 dog 中,对它的引用的数目增加到 1。当此方法完成/返回时,引用变量 dog 就不再在其作用范围内,对其的引用数目减为 0。此时,Dog 实例就要被垃圾回收器回收。

下面,看看这段代码:

...

while (true)

Dog dog = new Dog();

...

上述代码中,while 循环(一直进行)的每一轮都为Dog 的一个新实例分配空间,将其引用存放在 dog 中并替换掉在上一轮循环中放入的对 Dog 实例的引用。此时,前面分配的实例就成了垃圾回收的对象。

垃圾回收器自动定期执行。任何时候你都可以手动通过 System.gc() 调用垃圾回收器。

java具有回收垃圾的作用吗_Java中垃圾回收功能相关推荐

  1. Java平台,标准版Oracle JDK 9中的新功能

    Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个 ...

  2. java中垃圾收集_Java中垃圾回收机制

    "猪能吃的是湿垃圾,猪不吃的是干垃圾,猪吃了会死的是有害垃圾,卖了能买猪的是干垃圾 ......"最近,上海人民都快被垃圾分类弄疯了.那作为程序员的你,知道在Java中是怎么垃圾回 ...

  3. Java传统的io和nio区别_Java中IO和NIO的本质和区别

    简介 终于要写到java中最最让人激动的部分了IO和NIO.IO的全称是input output,是java程序跟外部世界交流的桥梁,IO指的是java.io包中的所有类,他们是从java1.0开始就 ...

  4. java 继承 实现 会重写 方法吗_java 中继承,组合,重载,重写的实现原理 (转)...

    我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...

  5. java中的日历_Java中的日历功能

    java.util.calendar类提供Java中的日历功能.是一个抽象类,提供在特定时间点和一组日历字段(例如YEAR,MONTH,DAY_OF_MONTH,HOUR等)之间进行转换的方法,以及用 ...

  6. Java所有函数都是动态的_Java中的函数动态调用

    //------------------------------------- //类ArgumentHolder //用于调用参数的封装,实现变长参数及 //不同类型参数的统一形式地传递 //成员变 ...

  7. java 什么时候进行垃圾回收_Java中垃圾回收有什么目的?什么时候进行垃圾回收?...

    仅提供一个大致的思路: 垃圾回收(gc)的目的是释放堆中不需要保存的对象,达到内存的充分利用. 1.回收哪些对象的判定 垃圾回收最简单的思路是采用引用计数的方式,即记录对象被引用的次数,直到一段时间内 ...

  8. java po vo bo是什么以及_JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么

    (一)O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据. 在O/R Mapping的世界 ...

  9. java复制两个对象报异常_Java中复制两个不同类的对象的属性

    Apache的开源包BeanUtils用来复制两个对象的属性,要使用这个Apache的开源包,要先去官网下载commons-beanutils-1.X.jar包,http://www.apache.o ...

  10. java bufferedwriter会自动创建文件吗_Java中为什么会有包装类?自动拆装箱必要吗?关于Wrapping Class这是重点!...

    入题 自动封箱与拆箱人人皆可言之道之,但封箱和拆箱却被多数人略之!如此简单的一个机制,却影射着Java的核心理念,不清楚?继续向下看吧~ Java中的数据类别 目前Java中的数据类别分为两种,一种是 ...

最新文章

  1. NHibernate ConfORM Mapping
  2. h5移动端如何让页面强制横屏
  3. IOS15 UICollectionViewController 如何初始化
  4. 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格...
  5. 单片机c语言篮球比分_基于单片机的篮球比赛计时计分器的设计
  6. 销货清单数据_2020年8月数据科学阅读清单
  7. 665C. Simple Strings
  8. 麒麟信安:根植于openEuler,走操作系统自主创新之路
  9. SAP 函数积累(转
  10. ORACLE SEQUENCE用法 (自增长)
  11. 【IDEA】Command line is too long. Shorten command ... or also for Application default configuration
  12. 源代码分析工具推荐Understand
  13. 如何用来客商城改造成种草商城
  14. 基于java的拼图游戏的设计与实现
  15. vue element table expand 扩展行点击行展示且保证只展示一行
  16. window 删除文件报错显示被程序占用 强制删除被占用的文件
  17. 《那些年啊,那些事——一个程序员的奋斗史》——43
  18. 女人,你真的懂自己吗:女生空间QQ情感日志
  19. android小米手机拍照功能,拍照参数设置界面_小米 M1(MIUI)_手机Android频道-中关村在线...
  20. 东大22春电子政务X《电子政务》在线平时作业1答案非答案

热门文章

  1. 旅游后台管理系列——SSM框架Web表现层
  2. linux文件移出目录命令_Linux移动文件命令F01
  3. vue2项目中全局引入scss变量
  4. 网站建设-学习笔记1-建站
  5. chattr 命令锁住一个文件任何人不能删除
  6. SpringMVC的Restful风格
  7. logstash zip linux安装,centos7.4安装测试logstash6.5.0
  8. 录ppt的时候录光标_光标的使用.ppt
  9. BLS门限签名介绍及实现
  10. JAVA基础(1/17)-JAVA语言概述