目前,我必须一次将超过 100 亿的数据插入到我的 android 中。但是,内存不足的问题会使程序崩溃。sqlite 插入测试非常简单。只需使用 for 循环生成 sql insert 命令并由“begin”和“commit”进行 wrqpped。
private ArrayList<String> sqlInsertCmd = new ArrayList<String>();
int QUERIES_TIMES = 10000000;
private void CreateInsertQueries()
{
Random localRandom = new Random();
int i = 0;
while (i < QUERIES_TIMES)
{
int j = localRandom.nextInt(100000);
sqlInsertCmd.add("insert into " + TABLE + " (a,b,c) values (" + i + "," +
j + ",'" + String.valueOf(j) + "')");
++i;
}
}
Then..
mDB.beginTransaction();
for (int i=0; i<this.QUERIES_TIMES; i++)
{
mDB.execSQL(sqlInsertCmd.get(i));
}
mDB.setTransactionSuccessful();
mDB.endTransaction();
有什么想法可以避免内存不足吗?
谢谢大家,但上面的代码只是一个简单的例子。在我的程序中,它更复杂。我必须在容器中存储一些东西(例如 hashMap)并动态构建 sql 语句。我可以创建 10 个服务,每个服务处理 1/10 个工作吗?