论坛首页 入门技术论坛

LIST与大数据量的处理

浏览 7209 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-10-24  
楼主干嘛要把1000000条数据分20个list然后在放入list中?甚是不解啊,list可以直接存放1000000条数据的啊。你那样做无非增加了内存开销~
0 请登录后投票
   发表时间:2011-10-24  
直接用素组吧...new个1亿大的数组..没啥好商量的..用list的脑残
0 请登录后投票
   发表时间: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;
	}
}
0 请登录后投票
   发表时间:2011-10-25   最后修改:2011-10-25
大数据量的时候  估计不能 一直放内存里 。
不过除了  给个限定,说超多多少 就 把 现有的 存到硬盘或者数据库,然后List清空再接受的方法,想不出更好的。

等待高人。。
0 请登录后投票
   发表时间:2011-10-25  
sharong 写道
你想实现啥功能,根据不同的功能,可以有不同的解决方案

我先把100W条数据放到ResultSet中。然后分批用这种方法写到文件。但100W条数据放到ResultSet中也是放到内存中。这样会加大内存开销??
0 请登录后投票
   发表时间:2011-10-25  
george6684 写道
大数据量的时候  估计不能 一直放内存里 。
不过除了  给个限定,说超多多少 就 把 现有的 存到硬盘或者数据库,然后List清空再接受的方法,想不出更好的。

等待高人。。

目前我就用这种方法实现。但把100W条放到ResultSet中也会加大内存。。
0 请登录后投票
   发表时间:2011-10-25  
你想做什么 为什么要放100万条?
会不会设计上就有问题?
我从来没做过100万条数据放List的事情
ps我从事的是大数据量的项目
0 请登录后投票
   发表时间:2011-10-25  
jorneyR 写道
才放100万条,太少了,我至少想放1亿条,楼下谁还想放得比我多!

你好强,没你多。
0 请登录后投票
   发表时间:2011-10-25  
Fkron 写道
george6684 写道
大数据量的时候  估计不能 一直放内存里 。
不过除了  给个限定,说超多多少 就 把 现有的 存到硬盘或者数据库,然后List清空再接受的方法,想不出更好的。

等待高人。。

目前我就用这种方法实现。但把100W条放到ResultSet中也会加大内存。。

这个可以不用加内存。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics