私はサービス内のセンサーデータを集めてSQLテーブルに格納しています。ユーザーがボタンをクリックすると、そのSQLデータをすべて取り出してCSVファイルに保存しますしかし、私はWindow is full: requested allocation XXX
ログカットにエラーが表示され続けるAndroidのCSV RAMへの書き込み
これは私のNexus 5xでのRAM使用率が高いためだと思いますか?
ユーザーがボタンを保存するクリックすると、プロセスを開始するためのコードは次のようになります。
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列以上ある