RT,谢谢各位

解决方案 »

  1.   

    从编程这角度看,Java就不存在内存泄露,那是JVM需要处理的内容,要应对的是Out of memory,这个和JVM参数有关系,还是主机资源有关系,既然要进内存也就没什么什么办法规避了,只能尽量节省~
      

  2.   

    load十万条记录,没什么问题,insert后及时commit就好了,逐条提交,如果想快,就用数据库的load方法,每个数据库都不一样...........
      

  3.   

    1。建议分批Load,除非真的很必要。
    2。使用相对简单的对象存放数据。因为复杂对象会占很多的空间。
    3。大数据量处理,最好使用C来处理,或考虑存储过程,直接操作数据库,不同需求,解决方案不同。
    4。尽管避免使用hibernate之类的ORM处理
      

  4.   

    -Xms256m -Xmx512m 通过这些参数来调整虚拟机内存大小。如果必须一次读入10W条记录,那就只能尽量把内存弄大的。再就是用尽量简单的数据结构。时间换空间还是空间换时间,这个就要LZ自己斟酌了。
      

  5.   

    加载数据和insert已经commit有什么关联?mysql怎么load?呵呵 不是很懂
      

  6.   

    多查数据库也没事嘛,如果你一次性把数据load进内存在内存中查询,是速度,但是你要考虑到是否有必要,是否你的服务器内存够大。如果要一次性load,那要数据库干嘛用
      

  7.   

    楼主说是如何省内存么?
    尽量不要使用HashMap、String这样的容器可以帮你省
      

  8.   

    java不存在内存溢出的。
    out of heap倒是可能。
    要想省内存,
    String用char[]动态数组代替
    能用boolean尽量用
    不要存在复杂的容器
      

  9.   

    我以前insert20W的用了1分钟 但我感觉还能接受
       1,将对象使用简单的值的形式,不要再使用对象的方式进行insert操作
       2.使用批量插入
       3.不要使用任何的ORM insert操作,直接使用jdbc说一下为什么 
    1.如果使用了对象的形式,在将数据转换成为对象的消耗可能比转变成值(SQL)的方式要大
    2.使用ORM的方式插入的话,肯定还存在一个将对象翻转为对应的SQL语句,因为数据库不可能知道对象是什么东西对吧,进行数据库中的数据要封装为对象,就会使用反射的方式。这个过程也是特别浪费时间的。
    3.如果你对应表的字段比较多的话,可能要慢一点,但是也不是相差的太多