因为需求,要将几百M数据在应用启动的时候加载进内存,方便以后调用。高手请回答,这种做法可取吗,如果加载少量数据(如字典等),其加载是不是写到静态方法里即可

解决方案 »

  1.   

    to timerri 
    能不能给个实例,比如说。 谢了
      

  2.   

    没明白你想到实现什么把载入代码:
    直接放在类的构造函数中...
    放在main中
    放在servlet的init中.....
    都行载入到map中,list中,或者缓存文件中,也是随你。仅载入个索引也是可以的。
      

  3.   

    想要实现的是:比如有好几百M的索引文件,我想在内存中管理这些索引,应该如何做,还要考虑运行中对这些索引进行更新这个问题,能说具体一点吗,map也行,list也行,不知哪个最好,放main如何实现,除了servlet的init外,有什么通常好用的方法没有
    谢谢大家的关注!
      

  4.   

    现在有个问题一直缠扰:内存数据到了一定量时,老是报错:java.lang.OutOfMemoryError: Java heap space
    我用myEclipse,是不是得设置eclipse堆的大小?
      

  5.   

    现在有个问题一直缠扰:内存数据到了一定量时,老是报错:java.lang.OutOfMemoryError: Java heap space
    我用myEclipse,是不是得设置eclipse堆的大小?
      

  6.   

    索引文件有几百M?索引在数据库里面只是一个字段,能达到上百M,难道你把整个地球都装进数据库了?一般只有网游缓存某块地区的地图文件时候,才会有这样的需求。想想吧!一个字符才占你多少空间?写1M纯字符,你要在键盘上敲多少下?
      

  7.   

    在 java 命令后面加上参数 -Xms256m -Xmx512m
      

  8.   

    回到原点,将你你面临的问题描述出来,看有没有其他可行的方法。何必问这个没必要、没效率的事情?OutOfMemoryError内存溢出。网上找到一段关于NetBean IDE配置:JVM提供一系列标准和非标准的参数来调整内存分配和垃圾回收,其中的一些设置可以帮助提高IDE的性能。其中的-X和-XX是某些特定的JVM所支持的参数,不是标准参数。在此讨论的是J2SE 1.4.2和J2SE 5.0所支持的参数,其他类型JVM的用户如遇到问题可以删除这些参数。以下将介绍的参数设置将帮助NetBeans IDE在大多数系统上提升性能。
    -J-Xverify:none
    此参数将关闭Java字节码的验证,使类的加载过程更加迅速,同时消除不必要的类装载,大大减少IDE启动时间。 
    -J-Xms32m
    此参数将使Java虚拟机的初始堆内存(initial heap size)设为32M,设置虚拟机的初始堆内存,将避免当IDE增加内存占用时频繁使虚拟机分配内存。 
    -J-Xmx128m
    此参数指定Java虚拟机可以分配的最大的堆内存,这将限制IDE所能消耗的最大物理内存,可以使NetBeans IDE运行在内存相对较小的系统上。我不知道JVM到底能设定多大的初始堆内存。很明显,问题不在这个地方,而在于你采用的解决方法。还是那句话,挑出圈子,你会发现更多的实现。
      

  9.   

    呵呵,他们用C语言做搜索时经常会在内存里开几百M空间,我不会C,就想着用JAVA如何实现,难道这个技术要求很变态吗,一点也不。索引文件里如果存储了一些原始信息,完全可能达到好几百M的,这样也是为了提高效率嘛。请高手出来指点一二
      

  10.   

    java可以.理想情况下可以加载2G
      

  11.   

    在   java   命令后面加上参数   -Xms1024m   -Xmx1024m这样才保险
      

  12.   

    java不知道,如果你用C,可以把文件影射到虚拟内存用mmap()-unix下面的, createMapFile(忘了具体名称,大概差不多),一般数据搜寻还是用C或者C++,java来处理交互然后经过映射,我们可以使用文件就像使用大型数组一样