假设我的代码如下:
int value=-1;
for(int i=0;i<10;i++)
{
f(value);
}
其中f
是一个调用其他类的复杂函数.etc。
我遇到了一个性能问题,它使IDE(NetBeans)冻结,几分钟后抛出堆大小异常。实际上它甚至在两次迭代(i <2)
时冻结但是,当我按顺序执行
时 f(value);
我立刻得到了答案,没有例外。
我该如何克服这个问题?是否有任何调整/另一种方式多次运行f(value)
?
答案 0 :(得分:1)
您似乎希望使用相同的输入执行十次function f
的逻辑
因此,最好在函数逻辑中执行它,而不是再调用函数f十次。它将reduce the cost of function call ten times
。
(不确定它是否符合您的目的。试试吧。)
答案 1 :(得分:1)
我认为,您需要检查函数f(value);
的代码和相关类。正如你所说,调用它一次是正确的,但对于后续调用,你面临堆内存异常。使不需要的对象有资格进行垃圾回收,避免字符串连接,以及利用可用内存的一些技巧。