您好 我有一个java应用程序正在处理数据库中的许多记录。现在处理了大约160个这样的java运行后抛出一个“OutOfMemoryError:Java堆空间”。由于这个原因,我更新了整个函数,以便一次只处理150条记录,当我简单地调用该函数一次时工作正常,但问题在于我必须处理大约10000条记录,这意味着我有手动运行相同的功能超过60次。
我的问题是,有没有办法可以将这个函数放在循环中并运行它多次而不会遇到问题。我无法理解为什么它会遇到这个问题,因为该函数是自包含的,并且没有使用前一次调用该函数所产生的任何数据(正如我所说,我可以手动运行该函数60次左右,得到想要的结果)。
提前致谢
答案 0 :(得分:4)
您很可能没有关闭Statement
和/或ResultSet
(s)。这些可以在打开时消耗大量资源。当你和他们一起玩时一定要关闭它们!
答案 1 :(得分:0)
这些问题背后的最可能原因之一是对开放渠道/资源的不当处理。一旦工作完成,请确保每个打开的手柄都关闭。打开 ResultSet 会消耗大量内存资源。此外,仅依靠JVM进行内存管理并不是一个好习惯。即使没有故意这样做,精心编写的代码也会在很大程度上产生优化的代码。
答案 2 :(得分:-2)
我认为通过几次调用函数不是好方法。恕我直言,您必须编写一个处理所有数据的存储过程。数据库准备处理大量数据。