锁定老帖子 主题:LIST与大数据量的处理
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-24
楼主干嘛要把1000000条数据分20个list然后在放入list中?甚是不解啊,list可以直接存放1000000条数据的啊。你那样做无非增加了内存开销~
|
|
返回顶楼 | |
发表时间:2011-10-24
直接用素组吧...new个1亿大的数组..没啥好商量的..用list的脑残
|
|
返回顶楼 | |
发表时间:2011-10-24
最后修改:2011-10-24
设置jvm启动参数-Xmx即可,我测试了一下需要消耗的内存大小大约为65M-75M之间,实际分配空间受Xmx大小影响。 测试代码如下:
public class Test { /** * @param args */ public static void main(String[] args) { // 开始时最大可用内存 long startMemory = printMemory(); 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 endMemory = printMemory(); // 占用内存 System.out.println((startMemory - endMemory)/1024.0/1024.0); } public static long printMemory(){ Runtime run = Runtime.getRuntime(); long max = run.maxMemory(); long total = run.totalMemory(); long free = run.freeMemory(); long usable = max - total + free; return usable; } } |
|
返回顶楼 | |
发表时间:2011-10-25
最后修改:2011-10-25
大数据量的时候 估计不能 一直放内存里 。
不过除了 给个限定,说超多多少 就 把 现有的 存到硬盘或者数据库,然后List清空再接受的方法,想不出更好的。 等待高人。。 |
|
返回顶楼 | |
发表时间:2011-10-25
sharong 写道 你想实现啥功能,根据不同的功能,可以有不同的解决方案
我先把100W条数据放到ResultSet中。然后分批用这种方法写到文件。但100W条数据放到ResultSet中也是放到内存中。这样会加大内存开销?? |
|
返回顶楼 | |
发表时间:2011-10-25
george6684 写道 大数据量的时候 估计不能 一直放内存里 。
不过除了 给个限定,说超多多少 就 把 现有的 存到硬盘或者数据库,然后List清空再接受的方法,想不出更好的。 等待高人。。 目前我就用这种方法实现。但把100W条放到ResultSet中也会加大内存。。 |
|
返回顶楼 | |
发表时间:2011-10-25
你想做什么 为什么要放100万条?
会不会设计上就有问题? 我从来没做过100万条数据放List的事情 ps我从事的是大数据量的项目 |
|
返回顶楼 | |
发表时间:2011-10-25
jorneyR 写道 才放100万条,太少了,我至少想放1亿条,楼下谁还想放得比我多!
你好强,没你多。 |
|
返回顶楼 | |
发表时间:2011-10-25
Fkron 写道 george6684 写道 大数据量的时候 估计不能 一直放内存里 。
不过除了 给个限定,说超多多少 就 把 现有的 存到硬盘或者数据库,然后List清空再接受的方法,想不出更好的。 等待高人。。 目前我就用这种方法实现。但把100W条放到ResultSet中也会加大内存。。 这个可以不用加内存。 |
|
返回顶楼 | |