试图从资产中读取巨大的CSV文件时发生OutOfMemoryError(仅在我测试代码的设备中打开,但不在其他设备中打开



这是我读取CSV文件的代码。我的文件在我的测试设备上打开,我在创建CSV文件时测试代码,但其他设备显示错误。在这本书中,我读了三行,标题是英语、旁遮普语和时间。我想用Java读取一个巨大的CSV文件。它包括75000000条线路。问题是,即使我使用最大xmsxmx限制,我也得到了:

Java.lang.OutOfMemoryError(超出GC开销限制(

它显示这一行导致错误:

try {
InputStreamReader is = new InputStreamReader(getAssets()
.open(value.concat(".csv")), encoding);
BufferedReader reader = new BufferedReader(is);
reader.readLine();
String line;
StringTokenizer st = null;
while ((line = reader.readLine()) != null) {
// Log.d("hahaha", line);
st = new StringTokenizer(line, ",");
// attributes
addToList(st.nextToken(), st.nextToken());
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
highlightText();
}
},
Integer.parseInt(st.nextToken()) * 1000
);
}
reader.close();
} catch (Exception e) {
Log.d("hahaha", e.getMessage());
}

在清单中启用大堆:

<application
.
.
android:largeHeap="true"
.
.>

最新更新