我正在尝试在googlemap上生成热图,大约有200万个点(经度和纬度)。我的想法是从表中读取点,并将它们传递到列表中的google api。问题是,将200万个点加载到列表中会导致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。

最佳答案

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

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

另一个选择是拆分数据集-就像在进行分页时一样。

关于java - 将数据加载到列表时出现内存不足异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21825141/

10-10 12:41