我正在服务中收集一堆传感器数据,将其存储到SQL表中,当用户单击一个按钮时,我将所有SQL数据保存到CSV文件中,但我一直在{在logcat中显示错误<1}}
通过谷歌搜索,我认为这可能是由于我的Nexus 5x的RAM使用率很高?
当用户单击“保存”按钮时,开始该过程的代码如下所示:
Window is full: requested allocation XXX
然后在我的DBHelper中,File subjectFile = new File(subjectDataDir, subNum + ".csv");
try{
dbHelper.exportSubjectData(subjectFile, subNum);
} catch (SQLException | IOException e){
mainActivity.logger.e(getActivity(), TAG, "exportSubjectData error", e);
}
方法如下所示:
exportSubjectData
首先,这种问题通常是由RAM使用引起的吗?
假设我的问题是代码段中的RAM使用率很高,有没有更有效的方法来做到这一点而不消耗这么多内存?它试图写入CSV的表有超过300,000行和10列
答案 0 :(得分:0)
我猜你正在使用opencsv。您可以尝试在csvWrite.flush()
的每次x调用后调用csvWrite.writeNext(arrStr)
。这应该将数据从内存写入光盘。
你必须尝试x的最佳值。