哪种方式最好 - 在需要的时间和地点将表数据存储到java arraylist或access table?

时间:2012-03-10 10:39:22

标签: java mysql arraylist

问题是这样的:

我从一个点检索纬度和经度并将其存储到agent类中。 该类具有成员id,纬度和经度以及相关的功能。

现在在Java应用程序的开头,它从本地MySQL表中读取所有行(具有坐标值)并将其存储到这些agent变量的arraylist中。然后它读取这个arraylist并调用必要的函数并在最后绘制一个图形。

这适用于8K - 10K行的表,但是对于另一个包含大约200,000行的表,它会在java中开始给出Heap size错误。

我正在考虑在每次需要代理坐标时更改代码以访问db。这应该减少所需的内存吗?但是,有许多循环使用此Iterator ArrayList的agent。我仍然在解决如何处理这个问题。

那么哪个更好的选择 - 每次从表中读取或按原样继续并增加java内存分配? 谢谢你的阅读。

2 个答案:

答案 0 :(得分:1)

尝试仅根据需要加载数据。我们没有太多信息,但我假设用户不需要同时查看/交互所有10,000个数据点。除了设备屏幕大小的物理限制外,实际上用户将被这么多信息所淹没。

我会尝试实现一个分页系统。同样,我不知道您使用Agent类的内容,但尝试只加载向用户显示的Agent个。{/ p>

答案 1 :(得分:0)

您的策略存在严重缺陷:从磁盘读取大量数据,然后存储在数据库的内存中,发送到Java应用程序,最后将其放入JVM的内存中。这需要很多时间和资源。

使用游标,然后你就可以从db读取并同时在java app中迭代结果集,而JVM不必分配这么多内存。

一些文档: