jvm内存跟电脑内存不是一回事吧?
是不是做N个备份呀?
数据不大呀
试下每拿一条黑名单,在txt 文件里找一次,再写一次(效率是慢点。。呵呵)

解决方案 »

  1.   

    试下每拿一条黑名单,在txt 文件里找一次,再写一次
      

  2.   

    如果就运行一次的程序,别改了,运行时加上-Xms1024M -Xmx1024M
      

  3.   

    Test.classjava -Xmx1024m  Test
      

  4.   

    你有2G内存不代表jvm可以占用全部的2G
    所以加上这两个options可以允许占用1G内存,如果你想也可以改成-Xms1024M -Xmx2048M
    运行格式基本上11楼那样
      

  5.   

    我试了一下,可以直接用 long 数组存储黑名单,长度 2 千万的 long 数组占内存不过 160M 的样子,这个前提下完全可以再通过流来读取在订用户名单,每读取一行就生成一行,这个过程不会明显增加内存。
      

  6.   

    右键-run configuration-在jvm argument中加入
      

  7.   

    table Customers(phonenumber, ...)
    table Blacklists (phonenumber,...)SELECT DISTINCT Customers.phonenumber from Customers, Blacklists
            WHERE Customers.phonenumber 
                  NOT IN (SELECT phonenumber FROM Blacklists);
      

  8.   


    别的不清楚,只回答这个
    在eclipse的快捷方式里加参数,如:
    D:\eclipse\eclipse.exe -Xms1024M -Xmx1024M然后重新启动eclipse
      

  9.   

    用什么方法把数据分段加载进内存啊
    我的想法是把黑名单中的数据每一万条导入ArrayList
      

  10.   

    遍历黑名单文件,组成not in 的条件,重新sql查询一次
      

  11.   

    对于SQL语句长度的限制问题,想必有别的办法解决的,多次查询即可
      

  12.   

    BufferReader,缓冲读,一次只放一部分文件数据到内存中。这个可以解决你由于原始文件大一次读进内存耗资源的问题
      

  13.   

    附上一个方法,对两个表数据放入内存中进行排序,形成2个list,然后直接遍历,排序quicksort log2n,遍历直接n,应该比你快很多