跑算法的时候,遇到Java堆溢出的问题。
因为在编算法代码的时候,注意到了以下一点,很快找到了问题的解决方法:
慎重new类对象。比如一个类名AClass,新建A的实例instanceNew;用A的另一个实例instanceOld对它赋值。那么用instanceNew= instanceOld则仅传递类的地址,两个类名指向相同的地址。这样传值,速度快,节省内存,但是要注意的是:一方的类变量发生改变,另一方的相关类变量也发生改变。如果用instanceNew = instanceOld.clone(),即传递数值,instanceNew 和instanceOld指向不同的地址。这样传值,需要开辟新的内存,但是:一方的类变量发生改变,另一方的相关类变量不会发生改变,除非其中的类变量指向相同的地址。
本人算法问题在于,新建了过多冗余的实例。