黑马程序员技术交流社区

标题: 关于JAVA中内存垃圾回收器的问题! [打印本页]

作者: 贾成龙    时间: 2012-8-7 22:13
标题: 关于JAVA中内存垃圾回收器的问题!
Object 中finalize和JAVA虚拟机中gc()垃圾回收器的区别?都是回收垃圾!
作者: 叶久瑞    时间: 2012-8-7 22:39
         gc 只能清除在堆上分配的内存(纯java语言的所有对象都在堆上使用new分配内存),而不能清除栈上分配的内存(当使用JNI技术时,可能会在栈上分配内存,例如java调用c程序,而该c程序使用malloc分配内存时).因此,如果某些对象被分配了栈上的内存区域,那gc就管不着了,对这样的对象进行内存回收就要靠finalize().
       finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作.





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2