java 垃圾回收机制 finalize System.gc

java虚拟机,会自动回收资源,通常不用我们关心资源回收的问题。但是jvm垃圾回收,只是回收通过new对象时候占用的内存空间,也就是堆内存空间,对于其他特殊的内存,无法进行回收。还有一点就是:jvm回收的资源的时机不确定,通常是jvm资源耗尽的时候才会进行资源回收,jvm回收资源也会消耗资源。在一个是在程序运行结束,jvm会把资源归还操作系统。所以有时候,程序运行期间没有进行过资源回收。对于那些jvm无法回收的特殊的内存,需要我们手动写方法释放。jvm在准备好资源回收的时候,会调用对应对象的finalize()方法,我们可以在这个方法里处理一下那些jvm无法回收的资源,比如java程序调用c的方法,占用了堆栈空间,我们可以在这个方法里释放。这个方法是Object的方法,通常不需要我们去实现,只有需要在回收之前不得不做一些操作时候,我们会覆盖Obbect的这个方法。

System.gc()通知jvm进行垃圾回收,但是是否进行资源回收何时进行由jvm决定,他只是起了一个告知的作用。

猜你喜欢

转载自blog.csdn.net/mojiezuo123/article/details/80980227