将数据加载到List中时出现内存不足

时间:2014-02-17 09:24:29

标签: java google-maps ejb out-of-memory heatmap

我正在尝试在googlemap上生成热图,大约有200万点(纬度和经度)。我的想法是从表中读取点,并将它们传递给List中的google api。问题是,将200万个点加载到List中导致EJB中出现内存不足错误。以下是给我错误的一行。

 List<Earthquakerisk> earthquakeRiskList = em.createNativeQuery("SELECT ASTEXT(geomArea) as geomText, riskvalue,id FROM Earthquakerisk e",Earthquakerisk.class).getResultList();

可以应用哪些替代方法来读取点并将其加载到地图中?我使用的是glassfish 3.2.2,jdk 1.7,jsf 2.2,ejb。

1 个答案:

答案 0 :(得分:1)

您可以查看:http://code.google.com/p/vanilla-java/wiki/HugeCollections

另外,您是否考虑过创建自己的Iterator实现?然后,当迭代器执行下一步时,您可以按需检索所需的数据。

另一种选择是分割您的数据集 - 就像您在进行分页时一样。