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列