关于sqlite4java内存不断增长的解决
2014-01-24 22:33
225 查看
多线程使用sqlite数据库可以参考我前面文章:
/article/10114028.html
但是多线程即使使用了队列很多人对其是否会导致内存泄漏都抱有疑虑,正好
有一个项目中,使用上述队列方式使用sqlite数据库,结果会发现内存一直增
长,于是找遍了老外的各种E文文章都没有结果。自己摸索很久,终于找到问题
所在:“VACUUM”
结果效果非常的理想,内存占用基本不会动。
这个结果已经证明:队列已经确保不会内存泄漏,所增长的内存是数据库缓存
部分数据和删除数据不留下的内存碎片,使用“VACUUM”定期放进队列里清理
一下,内存增长问题完美解决!
下面是执行"VACUUM"的代码:
public static Boolean vacuum (SQLiteQueue myQueue) {
return myQueue.execute(new SQLiteJob<Boolean>() {
protected Boolean job(SQLiteConnection connection) {
SQLiteStatement st = null;
try {
st = connection.prepare("VACUUM");
st.step();
} catch (SQLiteException e) {
return false;
}
finally {
st.dispose();
}
return true;
}
}).complete();
}
/article/10114028.html
但是多线程即使使用了队列很多人对其是否会导致内存泄漏都抱有疑虑,正好
有一个项目中,使用上述队列方式使用sqlite数据库,结果会发现内存一直增
长,于是找遍了老外的各种E文文章都没有结果。自己摸索很久,终于找到问题
所在:“VACUUM”
结果效果非常的理想,内存占用基本不会动。
这个结果已经证明:队列已经确保不会内存泄漏,所增长的内存是数据库缓存
部分数据和删除数据不留下的内存碎片,使用“VACUUM”定期放进队列里清理
一下,内存增长问题完美解决!
下面是执行"VACUUM"的代码:
public static Boolean vacuum (SQLiteQueue myQueue) {
return myQueue.execute(new SQLiteJob<Boolean>() {
protected Boolean job(SQLiteConnection connection) {
SQLiteStatement st = null;
try {
st = connection.prepare("VACUUM");
st.step();
} catch (SQLiteException e) {
return false;
}
finally {
st.dispose();
}
return true;
}
}).complete();
}
相关文章推荐
- 关于VC中CListControl的不断插入和删除后内存不减的解决办法。
- 当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法
- 内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决
- 当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法
- java.lang.OutOfMemoryError: PermGen space 和 Java heap space 关于MyEclipse eclipse tomcat内存溢解决方法
- 内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)
- 内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)
- java中使用堆外内存,关于内存回收需要注意的事和没有解决的遗留问题(等大神解答)
- 内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)
- 关于出现“运行时间错误,是否要进行调试?”和“0X000000该内存不能为read”的解决方法
- 一个关于Java HTTP协议的错误及解决办法分享
- JAVA简单内存泄露分析及解决
- 关于java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)问题解决
- 各类Java heap space 解决方法,并通过java代码获取JVM的相关信息,所在操作系统的信息(包含eclipse&amp;myeclipse的调试的内存设置)
- 服务类程序防止内存不断增长的一些方法(一)
- 关于出现The type java.io.ObjectInputStream cannot be resolved.的问题解决
- Eclipse、Windows、Linux解决Java内存泄露问题java.lang.OutOfMemoryError
- javaWeb开发中关于eclipse等ide重新部署或重启项目等原因造成上传文件丢失问题解决方案
- Java内存泄露的理解与解决
- 关于JAVA(TM) Platfrom SE binary内存过高的问题