循环性能不佳,但顺序执行速度很快

时间:2013-11-13 09:23:01

标签: java performance exception

假设我的代码如下:

int value=-1;
for(int i=0;i<10;i++)
{
f(value);
}

其中f是一个调用其他类的复杂函数.etc。

我遇到了一个性能问题,它使IDE(NetBeans)冻结,几分钟后抛出堆大小异常。实际上它甚至在两次迭代(i <2)

时冻结

但是,当我按顺序执行

 f(value);

我立刻得到了答案,没有例外。

我该如何克服这个问题?是否有任何调整/另一种方式多次运行f(value)

2 个答案:

答案 0 :(得分:1)

您似乎希望使用相同的输入执行十次function f的逻辑 因此,最好在函数逻辑中执行它,而不是再调用函数f十次。它将reduce the cost of function call ten times

(不确定它是否符合您的目的。试试吧。)

答案 1 :(得分:1)

我认为,您需要检查函数f(value);的代码和相关类。正如你所说,调用它一次是正确的,但对于后续调用,你面临堆内存异常。使不需要的对象有资格进行垃圾回收,避免字符串连接,以及利用可用内存的一些技巧。