我正在尝试在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。
答案 0 :(得分:1)
您可以查看:http://code.google.com/p/vanilla-java/wiki/HugeCollections
另外,您是否考虑过创建自己的Iterator实现?然后,当迭代器执行下一步时,您可以按需检索所需的数据。
另一种选择是分割您的数据集 - 就像您在进行分页时一样。