Java 为什么我会出现内存不足错误?

Java 为什么我会出现内存不足错误?,java,android,out-of-memory,Java,Android,Out Of Memory,我老是犯这个错误 07-25 17:04:00.796: ERROR/AndroidRuntime(420): Caused by: java.lang.OutOfMemoryError 07-25 17:04:00.796: ERROR/AndroidRuntime(420): at org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuffer.java:79) 07-25 17:0

我老是犯这个错误

07-25 17:04:00.796: ERROR/AndroidRuntime(420): Caused by: java.lang.OutOfMemoryError
07-25 17:04:00.796: ERROR/AndroidRuntime(420):     at org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuffer.java:79)
07-25 17:04:00.796: ERROR/AndroidRuntime(420):     at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)
每次我尝试运行此方法时:

public void getImages() throws IOException{


    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpGet httppost = new HttpGet("https://sites.google.com/site/theitrangers/images/webImages.txt");
    HttpResponse response;

        response = httpclient.execute(httppost);


            HttpEntity ht = response.getEntity();

            BufferedHttpEntity buf = new BufferedHttpEntity(ht);

            InputStream is = buf.getContent();


            BufferedReader r = new BufferedReader(new InputStreamReader(is));

            StringBuilder total = new StringBuilder();
            String line;
            while ((line = r.readLine()) != null) {
                total.append(line + "\n");

              imageUrl = total.toString();
              Log.v("getImage1", "Retreived image");
            }
     }
这个方法所做的就是从网站上托管的文本文件中检索URL

编辑:调试指向的代码行。当它运行时,我发现内存不足错误

 public void getImages() throws IOException{


    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpGet httppost = new HttpGet("https://sites.google.com/site/theitrangers/images/webImages.txt");
    HttpResponse response;

**Specifically here:**  response = httpclient.execute(httppost);

您可能会收到OOM,因为您正在加载StringBuilder上内存中的文本文件,该文件应该很大。您应该将此文件写入本地文件,而不是StringBuilder,以避免出现错误。

如果应用程序中没有泄漏,则这可能与中讨论的问题相同(已修复!)。请搜索类似问题。我相信你会得到很多类似的线程,人们已经讨论过这个问题。你能发布完整的堆栈跟踪吗?很难确定代码中有问题的那一行。不过肯定是内存泄漏。@Sagar Hatekar在编辑中张贴了调试指向上面的位置。
VM
对您没有任何不利之处。您将获得OOM,因为您的程序一定已耗尽内存:-Pokay,所以也许我可以用代码从文本文档中获取字符串。存储在SQLite数据库中,并从中提取。唯一的问题是我会经常更改url的地址。我不想在数据库中存储URL,因为旧URL的大小会增加。您可以在每次导入时清理数据库。引用文件的内容很简单:
https://sites.google.com/site/theitrangers/images/ncaa12.jpg 
。当然不够大,放在我的手表上也不行。你。。。它只是一个简单的文本URL。你们认为会是什么?当我在现实生活中的调试设备上运行它时,它会运行greatCheck检查您正在使用的VM的内存限制,可能它太低了。