Java 读取大型txt文件时emulator上出现OutOfMemoryError
我有一个大的txt文件,其中包含超过200k行。每行1个字。 我需要加载这个文件中的所有单词,它在我的Nexus7上运行正常,但当我尝试在emulator上启动我的应用程序时,我发现了一个错误。问题出在哪里?我想确保手机用户不会有这样的错误Java 读取大型txt文件时emulator上出现OutOfMemoryError,java,android,Java,Android,我有一个大的txt文件,其中包含超过200k行。每行1个字。 我需要加载这个文件中的所有单词,它在我的Nexus7上运行正常,但当我尝试在emulator上启动我的应用程序时,我发现了一个错误。问题出在哪里?我想确保手机用户不会有这样的错误 public static ArrayList<String> getWords(Context context) throws IOException { ArrayList<String> words = new
public static ArrayList<String> getWords(Context context) throws IOException {
ArrayList<String> words = new ArrayList<String>(300000);
InputStream is = context.getAssets().open("words.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String word;
while ((word = br.readLine()) != null) {
words.add(word.toUpperCase());
}
is.close();
br.close();
return words;
}
publicstaticarraylistgetwords(上下文上下文)抛出IOException{
ArrayList单词=新ArrayList(300000);
InputStream=context.getAssets().open(“words.txt”);
BufferedReader br=新的BufferedReader(新的InputStreamReader(is));
字符串字;
while((word=br.readLine())!=null){
words.add(word.toUpperCase());
}
is.close();
br.close();
返回单词;
}
不建议在内存中加载如此大的文件,因为您无法确定android设备上是否有可用的硬件资源
我建议您改用sqlite数据库。它不仅允许您加载数据,还便于轻松搜索和修改操作。不建议在内存中加载如此大的文件,因为您无法确定android设备上是否有可用的硬件资源
我建议您改用sqlite数据库。它不仅允许您加载数据,还方便了轻松的搜索和修改操作。200K对于android设备来说相对较大,因此您必须使用db 但我认为你的问题是别的。
是否增加了模拟器内存(设备ram大小) 200K对于android设备来说相对较大,因此您必须使用db 但我认为你的问题是别的。
是否增加了模拟器内存(设备ram大小) 如果你真的想让它在模拟器中工作,你可以增加RAM的大小 您可以在创建AVD映像时执行此操作(“硬件”选项中有一个“最大VM应用程序堆大小”选项)。此值的默认值为24,需要输入256或更高
这是针对特定问题的解决方案,但是您可以考虑使用DB,正如其他答案所建议的那样 如果你真的想让它在模拟器中工作,你可以增加RAM的大小 您可以在创建AVD映像时执行此操作(“硬件”选项中有一个“最大VM应用程序堆大小”选项)。此值的默认值为24,需要输入256或更高
这是针对特定问题的解决方案,但是您可以考虑使用DB,正如其他答案所建议的那样 你考虑过用数据库来代替吗?Android设备通常(非常)有限的RAM。添加堆栈跟踪会有帮助。你考虑过使用数据库吗?Android设备通常(非常)有限的RAM。添加堆栈跟踪会有一些帮助。