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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李然 中级黑马   /  2013-12-7 01:17  /  1449 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本人菜鸟一枚,想请教各位大神一个问题,在java中的内存回收机制,能不能用析构函数来代替?析构函数能不能像构造函数那样被重写?java中除了虚拟机的自动内存回收机制,还有没有可以手动对内存进行回收的方法或者类?
希望各位高手可以指点一下,多谢!!!{:soso_e113:}

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
狼王 + 1 + 6 赞一个!

查看全部评分

2 个回复

倒序浏览
System.gc()好像是这个,但是上网的时候还看见有经验的人说最好别自己调用,会出现未知的错误。都学java了,咱能省心就省心吧

评分

参与人数 1黑马币 +3 收起 理由
狼王 + 3 赞一个!

查看全部评分

回复 使用道具 举报
java是有自动的垃圾回收机制的。这一点不像c++。在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。你可以查一下java垃圾回收机制的资料,也有助于你写出效率较高的代码。
1.其实,若果想在垃圾回收时做一点事情,可以使用finalize()函数,这是在Object类中定义的,我们只要重载它就可以了。
2.如下代码 可以用System.gc(),来进行手动回收。
class TestGC {
public static void main(String[] args)
{
new TestGC();
System.gc();
System.runFinalization();
}
}

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马