是否必须将他们都实例化?
你可以使用随机文件读写
或者把 jvm 使用内存数目增大
或者干脆用个数据库

解决方案 »

  1.   

    处理大量数据一般要用到weblogic
      

  2.   

    是一个后台应用,要对数据处理,不实例化应该不行吧,我觉得很奇怪,我的一个实例大小300b左右,放在一个ArrayList里,100w个实例不过300m左右,但进程里确占了2g左右内存,为什么呀?
      

  3.   

    自己顶
    刚又做了个测试,object不过10m,但我怎么在进程里看到java进程占了60多m的内存呢?
      

  4.   

    Focus...
    BTW: 100万记录用 ArrayList 绝对不是一个好注意,
    如果处理过程不需要将所有数据都实例化后才能进行的化,
    你可以用一下 Memory Mapped File,
    如果必须将所有数据都实例化后才能计算那就不如用一个数据库了,
    推荐 IBM 的 Cloudscape 嵌入式数据库
      

  5.   

    registered(已注册)
    麻烦简单介绍一下Memory Mapped File
    看来还是要用数据库:(
      

  6.   

    请你先介绍一下你的处理流程
    看能不能用Memory Mapped File这个东西语法很简单
            FileChannel fc1;
            MappedByteBuffer mbb;
            fc1 = new RandomAccessFile(src, "r").getChannel();
            mbb = fc1.map(FileChannel.MapMode.READ_ONLY, 0, fc1.size());
    不过是按照字节读数据的
    但是性能有保证
      

  7.   

    Buffer具体用法见:
    http://java.sun.com/j2se/1.4.2/docs/api/java/nio/Buffer.html
      

  8.   

    api我看过了,谢谢registered(已注册) 
    我主要是要在内存里处理一些数据,比如相同关键字的数据合并
    我想导到文件里不一定是个好办法,我在考虑别的什么方案
    不是很明白java的内存怎么分配的,实际数据的大小和java进程的内存占用差距太大了