将组件赋值为null和释放有什么区别
您的每一个用心回答,都会让这个世界变得更美好一些!
这两个不是一回事,不能拿来比较,首先你得理解Java里的对象是什么,对象一般会在堆里有一个引用,这个引用会指向真正的资源或者数据,而资源的释放一般都是泛指释放掉一些硬件资源,不使用了就不要占用资源,很简单能理解对吧,那为什么释放了还要置空?你新建的这个对象是对mediaPlayer的引用,它一直指向mediaPlayer,在强引用的情况下,GC是不会去回收的,什么情况下GC会回收?正常情况下当一个对象失去了引用,也就是说没人指向它了,根节点没办法到达的,那GC这个时候就会去回收它,如果你一直引用着,资源也就一直不会释放掉了,一般我们通常的做法是先释放内部资源,也就是调用自身的release啊、close等方法释放,再去释放外部引用,这个时候就是置空了,这样才不会导致内存泄漏。
释放,是 怎么做的?
这两个不是一回事,不能拿来比较,首先你得理解Java里的对象是什么,对象一般会在堆里有一个引用,这个引用会指向真正的资源或者数据,而资源的释放一般都是泛指释放掉一些硬件资源,不使用了就不要占用资源,很简单能理解对吧,那为什么释放了还要置空?你新建的这个对象是对mediaPlayer的引用,它一直指向mediaPlayer,在强引用的情况下,GC是不会去回收的,什么情况下GC会回收?正常情况下当一个对象失去了引用,也就是说没人指向它了,根节点没办法到达的,那GC这个时候就会去回收它,如果你一直引用着,资源也就一直不会释放掉了,一般我们通常的做法是先释放内部资源,也就是调用自身的release啊、close等方法释放,再去释放外部引用,这个时候就是置空了,这样才不会导致内存泄漏。
释放,是 怎么做的?