码迷,mamicode.com
首页 > 编程语言 > 详细

关于为什么java需要垃圾回收

时间:2014-11-06 07:01:57      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:使用   java   sp   数据   bs   amp   new   c++   nbsp   

为什么java采用垃圾回收而c++却不采用,这是因为在java中,所有对象变量都是引用,当一个引用被新对象覆盖掉时,就没有引用指向原来的对象了,这个对象就“失控了”。

而C++中,除非使用特殊符号&标明变量名是引用,否则变量指的是对象,对象是有生命周期的,在生命周期结束时会调用析构函数完成内存释放,而C++引用的对象,必须变量指向,清楚点说是首先要声明对象后才可以对其引用,即使引用后来又指向其他变量,也不会导致原来的对象引用数为0,这样仍然可以调用其析构函数(通过指向对象的变量),而java的引用已经指向其他对象,所以无法获取原来对象的地址,这也是为什么java为什么都把数据放在堆中。

这里没有考虑C++new的情况

 

RAII超越函数声明周期:

关于为什么java需要垃圾回收

标签:使用   java   sp   数据   bs   amp   new   c++   nbsp   

原文地址:http://www.cnblogs.com/johnnyflute/p/4077753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!