A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾成龙 中级黑马   /  2012-8-7 22:13  /  1240 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Object 中finalize和JAVA虚拟机中gc()垃圾回收器的区别?都是回收垃圾!

1 个回复

倒序浏览
         gc 只能清除在堆上分配的内存(纯java语言的所有对象都在堆上使用new分配内存),而不能清除栈上分配的内存(当使用JNI技术时,可能会在栈上分配内存,例如java调用c程序,而该c程序使用malloc分配内存时).因此,如果某些对象被分配了栈上的内存区域,那gc就管不着了,对这样的对象进行内存回收就要靠finalize().
       finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马