Java里的对象在程序结束后会被立刻清除吗?
我看到有的书上说只有在虚拟机认为内存不多的时候才会销毁对象,是这样吗?有没有办法强制销毁?finalise()方法可不可以清楚对象?System.gc()是清除当前的所有...
我看到有的书上说只有在虚拟机认为内存不多的时候才会销毁对象,是这样吗?有没有办法强制销毁?finalise()方法可不可以清楚对象?
System.gc()是清除当前的所有对象还是不再被引用的对象? 展开
System.gc()是清除当前的所有对象还是不再被引用的对象? 展开
展开全部
正常情况是在内存不够时进行垃圾回收,System.gc()也可以强行进行垃圾回收,建议你别这么做,他会把当前运行的程序停下来,然后进行垃圾回收,这个过程是很耗费资源的过程,只会让程序更卡。finalise()方法是该对象被回收前要调用的方法,就是这个对象的遗书了,你直接调用finalise()这个只能把人家遗书读了一遍,但是人家不会这个时候就死的。
System.gc()只回收垃圾对象,就是没有引用的对象。最后建议写程序的时候,尽量不要把太多启动垃圾回收,特别是一般情况下不要自己去手动调用垃圾回收。绝大多数情况下垃圾回收机制还是可以让人接受的。
System.gc()只回收垃圾对象,就是没有引用的对象。最后建议写程序的时候,尽量不要把太多启动垃圾回收,特别是一般情况下不要自己去手动调用垃圾回收。绝大多数情况下垃圾回收机制还是可以让人接受的。
展开全部
虚拟机销毁对象是随机的,不可预测的,没有办法强制销毁;
System.gc()只是通知虚拟机可以进行销毁了,销不销毁都是看虚拟机,它自己并不会做什么清除的工作;
fianlise()方法只是当虚拟机在清除对象之前调用,人为控制不了;
总之一句话,销毁对象完全由虚拟机控制,程序员能做的就是通知虚拟机可以销毁了,但不能控制。
System.gc()只是通知虚拟机可以进行销毁了,销不销毁都是看虚拟机,它自己并不会做什么清除的工作;
fianlise()方法只是当虚拟机在清除对象之前调用,人为控制不了;
总之一句话,销毁对象完全由虚拟机控制,程序员能做的就是通知虚拟机可以销毁了,但不能控制。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
finalise()方法是在对象销毁之前会调用的方法
不能用来清除对象
当没有引用引用到某个对象的时候这个对象就可能会在未来的某个时刻销毁
也可以通过调用System.gc();方法手动销毁对象
例如:
Object obj = new Object();//创建对象
obj = null;//取消对该对象的引用
System.gc();//清除对象
System.gc()是清除当前的所有不再被引用的对象
不能用来清除对象
当没有引用引用到某个对象的时候这个对象就可能会在未来的某个时刻销毁
也可以通过调用System.gc();方法手动销毁对象
例如:
Object obj = new Object();//创建对象
obj = null;//取消对该对象的引用
System.gc();//清除对象
System.gc()是清除当前的所有不再被引用的对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询