3
我正在一個Service中收集一堆傳感器數據,將它存儲到一個SQL表中,當用戶單擊一個按鈕時,我將所有這些SQL數據都保存到一個CSV文件中,但我不斷收到Window is full: requested allocation XXX
錯誤顯示在logcatAndroid寫入CSV內存問題
從一點谷歌搜索,我認爲這可能是由於我的Nexus 5x內存使用率高?
當用戶點擊保存按鈕,代碼開始過程是這樣的:
File subjectFile = new File(subjectDataDir, subNum + ".csv");
try{
dbHelper.exportSubjectData(subjectFile, subNum);
} catch (SQLException | IOException e){
mainActivity.logger.e(getActivity(), TAG, "exportSubjectData error", e);
}
我DBHelper
然後,exportSubjectData
方法是這樣的:
public void exportSubjectData(File outputFile, String subNum) throws IOException, SQLException {
csvWrite = new CSVWriter(new FileWriter(outputFile));
curCSV = db.rawQuery("SELECT * FROM " + DATA_TABLE_NAME + " WHERE id = " + subNum, null);
csvWrite.writeNext(curCSV.getColumnNames());
while (curCSV.moveToNext()) {
String arrStr[] = {curCSV.getString(0), curCSV.getString(1), curCSV.getString(2),
curCSV.getString(3), curCSV.getString(4), curCSV.getString(5),
curCSV.getString(6), curCSV.getString(7), curCSV.getString(8),
curCSV.getString(9), curCSV.getString(10)};
csvWrite.writeNext(arrStr);
}
csvWrite.close();
curCSV.close();
}
首先,這種類型的問題通常是由RAM使用引起的?
假設我的問題是該代碼段中的RAM使用率很高,是否有更高效的方法可以在不消耗太多內存的情況下執行此操作?它試圖寫入CSV的表格有超過300,000行和10列