gpt4 book ai didi

java - 从android中的服务器下载数据时出现Outofbound内存异常

转载 作者:行者123 更新时间:2023-11-30 03:37:15 25 4
gpt4 key购买 nike

我必须从服务器将大约 6000 条记录下载到 sqlite 数据库中。记录以 JSON 对象的形式存在。在使用 BufferedReader 检索它们时,我收到一个错误,因为内存不足异常。我搜索了很多网站,但找不到合适的答案。请提出一些最佳解决方案。

我的代码是:

URL url = new URL("myurl");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
//getting error here
line = in.readLine();
System.out.println(line);
JSONArray outerArray = (JSONArray) JSONSerializer.toJSON(line);
System.out.println("size : " + outerArray.size());

我得到了这个致命异常 -

                 E/AndroidRuntime(616): java.lang.OutOfMemoryError: [memory exhausted]

最佳答案

您下载的文件太大,无法保存在内存中

尝试这样做

    // download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream();

byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....

output.write(data, 0, count);
}

output.flush();
output.close();
//

更多解释see this

还有

您应该将 json 流与 gson 或 jackson 一起使用。对于 Jackson,您也可以使用混合方法。这将显着减少您的内存消耗,因为只有被解析的 json 部分被加载到内存中。

https://sites.google.com/site/gson/gson-user-guide

关于java - 从android中的服务器下载数据时出现Outofbound内存异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16476558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com