痛苦了好多天的问题,以为是自己对框架的不熟悉导致在调用某各类的参数时,出现异常现象。解决的方法从《Thinking in Java 》第四版第2章一切都是对象、第5章初始化与清理中获得,综合了Stack Overflow上的一些观点。
在编程的过程中,会经历这样一种情形:在方法的结尾将对象赋值为null和清空集合的操作。其实这对于垃圾回收器来说没有意义。垃圾回收器对于方法内部的变量的回收很容易执行。
1,Java中new 出来的对象,也叫对该对象的引用,JVM(Java 虚拟机)垃圾回收机制会根据其寿命决定何时回收该对象。很多时候不需要自己去清除。
切记:Java中的对象被不总是被垃圾回收器回收,即
- 对象可能不会被垃圾回收;
- 垃圾回收并不等于“析构”(C++)中;
- 垃圾回收只与内存有关。
2,在多线程中,尽量将类的全局变量转换为为局部变量,或者在方法和循环内部定义,再者取决于变量作用域,垃圾回收器更容易决定其是否应该被回收。
3,将对象的值赋值为null,相当于把对象的引用清除掉,即把引用对象的指针kill掉,再使用集合就会报空指针异常;调用集合的clear()方法,是把集合内部的对象都清空,而集合的引用还存在。
4,将集合作为参数传递到方法中,相当于把集合的引用传递到方法中,在方法中执行任何和集合相关的清除操作,相当于对集合执行清除操作。【上述解决方法解决不了问题,尝试此方法】