java具有回收垃圾的作用吗_Java中垃圾回收功能

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() 调用垃圾回收器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值