为什么java采用垃圾回收而c++却不采用,这是因为在java中,所有对象变量都是引用,当一个引用被新对象覆盖掉时,就没有引用指向原来的对象了,这个对象就“失控了”。
而C++中,除非使用特殊符号&标明变量名是引用,否则变量指的是对象,对象是有生命周期的,在生命周期结束时会调用析构函数完成内存释放,而C++引用的对象,必须变量指向,清楚点说是首先要声明对象后才可以对其引用,即使引用后来又指向其他变量,也不会导致原来的对象引用数为0,这样仍然可以调用其析构函数(通过指向对象的变量),而java的引用已经指向其他对象,所以无法获取原来对象的地址,这也是为什么java为什么都把数据放在堆中。
这里没有考虑C++new的情况
JAVA只有new没有delete,这样在程序员看来,不需要去关心内存,只需声明并使用即可 ,php同样也是,专注于业务逻辑,提高开发效率
解释执行的语言可以在运行时调优
需要对存储进行操作的程序使用什么类型语言
RAII超越函数声明周期: