论坛首页 入门技术论坛

LIST与大数据量的处理

浏览 7207 次
该帖已经被评为新手帖
作者 正文
   发表时间: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错误。

请问怎样解决这种问题??
   发表时间:2011-10-24  
写到数据库里
0 请登录后投票
   发表时间:2011-10-24  
创建的list对象在堆里,其实也就是说java对象需要用到内存,那么,list存储的记录越多,那么使用的内存越多。最后出现OutOfMemoryError很正常。
0 请登录后投票
   发表时间:2011-10-24  
你想实现啥功能,根据不同的功能,可以有不同的解决方案
0 请登录后投票
   发表时间:2011-10-24  
cjc19762338 写道
创建的list对象在堆里,其实也就是说java对象需要用到内存,那么,list存储的记录越多,那么使用的内存越多。最后出现OutOfMemoryError很正常。


我认为此人说的很对!~
0 请登录后投票
   发表时间:2011-10-24  
程序里用到的数据都JB是放内在里的。哈哈
0 请登录后投票
   发表时间:2011-10-24  
可以分开放,AraayList其实是个大数组,为数组分配的内存是连续的,分配连续的内存是代价是昂贵的,所以一般情况下,数组的长度不会太大。
如果你分开放到几个小数组里,就没有问题。
0 请登录后投票
   发表时间:2011-10-24  
这是大对象吧,你这样直接进了老年代,老年代内存本来就很少,当占用一定空间后后会进行一次FULL GC,但是这已经超过了他的空间限制。所就内存溢出了。
0 请登录后投票
   发表时间:2011-10-24  
才放100万条,太少了,我至少想放1亿条,楼下谁还想放得比我多!
0 请登录后投票
   发表时间:2011-10-24  
whao189 写道
cjc19762338 写道
创建的list对象在堆里,其实也就是说java对象需要用到内存,那么,list存储的记录越多,那么使用的内存越多。最后出现OutOfMemoryError很正常。


我认为此人说的很对!~

呵呵,我隐约明白你的意思哦
1 请登录后投票
论坛首页 入门技术版

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