小弟目前在做一个服务器模块(类似WEB QQ),要求把用户的聊天记录保存于服务器端,为减少数据库的负担,要求先将记录写在内存中,到达一定程度后再一次性刷到数据库中,请问各位大侠有什么实现方案么,我对这里都不是很懂,第一次开发,求解答,最好能有实例代码^-^
解决方案 »
- 求救JSP大神,我想加个非空验证
- fusionchart做雷达图,急......
- 求助:如何在JAVASCRIPT里查询数据库
- fileupload 上传文件时出错...研究好久都始终找不到原因...请各位高手来救救小弟..小弟先谢了....在线等....急...
- 好久没来了,问个问题。为什么服务器上的Mysql的数据老是丢失呢?
- 奇怪变量问题?
- session小问题,20分哪去!
- 项目经理除了与客户沟通、作需求设计之外,在技术上还要会什么?
- 那位大神告诉一下C3P0的最新稳定版本号
- 一个freemarker的配置问题
- 很奇怪的问题!!!100分求解!!在线等!!!!!!!!
- 关于tomcat和Eclipse的一个小问题,解决了 立即结贴。
你把聊天数据 直接放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);
}
}