C++和java中垃圾回收机制的浅浅理解

在C++中,使用new配置新的对象,必须使用delete来清楚,以释放对象所占据的内存空间,如果没有进行这个动作,则若对象不断的产生,内存就会不断的被耗用,最后使得内存空间被用尽,然而使得内存空间用尽,然而使用delete并不是那么的简单,如果不小心清楚了尚未引用的对象,或者是空间中公用的资源,则程序就会报错,小心使用new和delete,在c++ 中比较重视new对象。

在java中,使用new配置信的对象,基本上也是必须清除以回收内存空间的。但是不用关注这个问题,因为java中提供了 垃圾回收处理机制,在适当的时候java执行的时候会自动检查对象,看看是否被引用,如果有的话就是清除对象,回收对象做占据的空间。(垃圾收集的时机我们没有办法知道,可能是内存资源不足的时候,或者是在程序空闲的时候,可以建议执行垃圾收集,如果程序中有优先权更高的线程正在进行,则垃圾收集并不一定会马上进行。)

在c++中有解构方法,它会在对象清除前执行,但是在java中不明确有解构方法,因为我们不知道对象什么时候会被回收,在java中有finalize()这个方法,被声明为protect,当被垃圾回收的时候执行,但并不是解构方法,因为我们不知道对象资源什么时候回收,所以也不会立即执行我们指定的操作,但是我们可以使用finalize()来进行一些相关资源的清除动作。

如果我们确定某个对象不再使用,可以在指向该对象的名称指定为null,表示这个名称不在指向任何对象,可以使用system.gc()建议程序进行垃圾收集,如果建议被采纳,则对象资源会被回收,并且执行finalize()方法C++和java中垃圾回收机制的浅浅理解C++和java中垃圾回收机制的浅浅理解