1.如何手工销毁一个对象,释放其占用的内存空间
2.如果一个对象容器中,比如ArrayList,其中存放了很多对象,这些对象在什么情况下会自动销毁?容器对象销毁了,这些对象会自动销毁吗?调用ArrayList.clear()方法以后,这些对象会自动销毁吗?
2.如果一个对象容器中,比如ArrayList,其中存放了很多对象,这些对象在什么情况下会自动销毁?容器对象销毁了,这些对象会自动销毁吗?调用ArrayList.clear()方法以后,这些对象会自动销毁吗?
static A a=new A();
A aa= new A();
a=aa;那么第一次创建的A的实例会自动销毁吗?
这样我觉得比较好一些,但是不是Java标准.至于他们甚么时候被销毁,不是我们可以控制的,那是gc的事情.
我们写代码只能保证gc能不能删除他们.
2、调用ArrayList.clear()方法以后,会被清理掉。
3、第一次创建的A的实例肯定会自动销毁
2。应该是告诉虚拟机这个ArrayList没用了,但是虚拟机不一定马上销毁它
3。会
如果你明白第3个问题的a=new A()分配的内存没有用到(好玩?),避免这么写不就可以了——实际上是被回收的Java号称自动回收,一般情况应该是没有问题的;如果到了这个问题也需要计较的时候,你已经是高高手了如果还想进一步了解,百度或google一下吧,好多东西,我都看不过来~
被gc回收
ArrayList中放的是对象的"引用",如果对象还被其他地方"引用",你即使clear()一万次,对象还在.
以后的JVM会改进的