锁定老帖子 主题:LIST与大数据量的处理
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-24
public class ListTest { public static void main(String[] args) { long start = System.currentTimeMillis(); List ll = new ArrayList(0); List<List<String>> list = new ArrayList<List<String>>(12); List<String> l = new ArrayList<String>(12); for (int i = 0; i < 1000000; i++) { if ((i + 1) % 50000 == 0) { list.add(l); l = new ArrayList<String>(); } l.add(i + "aaaaaa"); } long end = System.currentTimeMillis(); System.out.println(end - start); } } 我将100W条数据放入LIST中。会报:java.lang.OutOfMemoryError: Java heap space错误。 请问怎样解决这种问题?? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-10-24
写到数据库里
|
|
返回顶楼 | |
发表时间:2011-10-24
创建的list对象在堆里,其实也就是说java对象需要用到内存,那么,list存储的记录越多,那么使用的内存越多。最后出现OutOfMemoryError很正常。
|
|
返回顶楼 | |
发表时间:2011-10-24
你想实现啥功能,根据不同的功能,可以有不同的解决方案
|
|
返回顶楼 | |
发表时间:2011-10-24
cjc19762338 写道 创建的list对象在堆里,其实也就是说java对象需要用到内存,那么,list存储的记录越多,那么使用的内存越多。最后出现OutOfMemoryError很正常。
我认为此人说的很对!~ |
|
返回顶楼 | |
发表时间:2011-10-24
程序里用到的数据都JB是放内在里的。哈哈
|
|
返回顶楼 | |
发表时间:2011-10-24
可以分开放,AraayList其实是个大数组,为数组分配的内存是连续的,分配连续的内存是代价是昂贵的,所以一般情况下,数组的长度不会太大。
如果你分开放到几个小数组里,就没有问题。 |
|
返回顶楼 | |
发表时间:2011-10-24
这是大对象吧,你这样直接进了老年代,老年代内存本来就很少,当占用一定空间后后会进行一次FULL GC,但是这已经超过了他的空间限制。所就内存溢出了。
|
|
返回顶楼 | |
发表时间:2011-10-24
才放100万条,太少了,我至少想放1亿条,楼下谁还想放得比我多!
|
|
返回顶楼 | |
发表时间:2011-10-24
whao189 写道 cjc19762338 写道 创建的list对象在堆里,其实也就是说java对象需要用到内存,那么,list存储的记录越多,那么使用的内存越多。最后出现OutOfMemoryError很正常。
我认为此人说的很对!~ 呵呵,我隐约明白你的意思哦 |
|
返回顶楼 | |