小弟目前在做一个服务器模块(类似WEB QQ),要求把用户的聊天记录保存于服务器端,为减少数据库的负担,要求先将记录写在内存中,到达一定程度后再一次性刷到数据库中,请问各位大侠有什么实现方案么,我对这里都不是很懂,第一次开发,求解答,最好能有实例代码^-^

解决方案 »

  1.   

    可以放到session里,然后定时导入到数据库,清空session,放入其他内容,重新计时
      

  2.   

    session里放个集合对象,集合对象里放聊天记录。具体选哪个看你各方面的需要了。
      

  3.   

    可以先把聊天记录 写在session中 等session里内容达到一定数量 在存数据库中
      

  4.   

    ,放在session里面的话一定要定时清空才行。
      

  5.   


    你把聊天数据 直接放list里面,不就是放在内存里?当list.size到达一定数量时,做个 导入数据库并清空list的操作 就可以了。其实你判断内存剩余是非常不科学的。因为JAVA有个垃圾回收器,可用内存是一直变化的,你怎么能确定设置多大剩余内存合适?如果你非要怎么做也行:
    /**
     * @author troy(J2EE)
     * @version 1.0  1995年的3月23日
     */
    public class Test
    {
    public static void  main(String[] args){
    // 获取堆的当前大小,单位为字节(Byte),下同   
    long heapSize = Runtime.getRuntime().totalMemory();   
    System.out.println("totalMemory="+heapSize/1024/8);   
    // 获取堆内存的最大值,堆所占用的内存不能超过这个值.   
    // 否则将导致异常(OutOfMemoryException)   
    long heapMaxSize = Runtime.getRuntime().maxMemory();   
    System.out.println("maxMemory="+heapMaxSize/1024/8);   
    // 获取堆中空闲内存的大小. 这个值会随着垃圾回收(GC)而增加, // 也会随着新对象的创建而减小   
    long heapFreeSize = Runtime.getRuntime().freeMemory();   
    System.out.println("freeMemory="+heapFreeSize/1024/8); 
    }
    }