我有一个运行一次,就在OnCreate和 一个sqlite的方法,它是下列之一:sqlite的方向变化内存泄露
List<Map<String, String>> resultsMap = new ArrayList<>();
String sqlQuery = " SELECT city_id,city_name,population FROM citylist ";
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery(sqlQuery, null);
int i = 0;
//Loop through the results and add it to the temp_array
if (c.moveToFirst()){
do{
//Answer Map
Map<String, String> map = new HashMap<String, String>();
map.put("cid", c.getString(c.getColumnIndex("city_id")) );
map.put("cname", c.getString(c.getColumnIndex("city_name")) );
map.put("population", c.getString(c.getColumnIndex("population")) );
//Add Answer to Answers arraylistmap
resultsMap.add(i, map);
i++;
} while(c.moveToNext());
}
//Close the cursor
c.close();
db.close();
//Return the string array
return theresults;
所有运行良好,但问题是,当我旋转模拟器 几在屏幕上的时间,它耗尽内存。
我调用它的onCreate这样
citiesList = myDbHelper.citiesListDB();
autoCompleteSearch.setThreshold(1);
searchAdapter = new SearchableAdapter(this, citiesList);
autoCompleteSearch.setAdapter(searchAdapter);
autoCompleteSearch是AutoCompleteTextView视图,其具有一个下拉 ,其从由所述分贝方法返回的ArrayList的填充。
我尽我所能去关闭数据库连接,但应用程序崩溃 仍然有此错误
E/dalvikvm-heap: Out of memory on a 28-byte allocation.
I/dalvikvm: "main" prio=5 tid=1 RUNNABLE
I/dalvikvm: | group="main" sCount=0 dsCount=0 obj=0xb5e5a4b0 self=0xb8b1a4e0
I/dalvikvm: | sysTid=11362 nice=0 sched=0/0 cgrp=[fopen-error:2] handle=-1208536000
I/dalvikvm: | schedstat=(0 0 0) utm=40 stm=45 core=0
I/dalvikvm: at java.util.HashMap.makeTable(HashMap.java:~555)
I/dalvikvm: at java.util.HashMap.doubleCapacity(HashMap.java:575)
I/dalvikvm: at java.util.HashMap.put(HashMap.java:405)
I/dalvikvm: at DatabaseHelper.citiesListDB(DatabaseHelper.java:262)
和这样的:
FATAL EXCEPTION: main
java.lang.OutOfMemoryError: [memory exhausted]
at dalvik.system.NativeStart.main(Native Method)
我认为它可能是相关的以记忆垃圾或东西
更新:DatabaseHelper.java:262
是
map.put("cid", c.getString(c.getColumnIndex("city_id")) );
如果您显示可编译的Java代码,这将有所帮助。特别是,你应该有一个类和一个包含你所问的代码的方法。这有助于我们将错误消息中的名称与代码中的名称进行匹配。 –
另请标记哪一行是262. –
@代码学徒,我已经指定了 – Ryan