Java Jsoup.connect().get()中的OutOfMemoryError

Java Jsoup.connect().get()中的OutOfMemoryError,java,android,jsoup,Java,Android,Jsoup,尝试使用Android上的Jsoup连接到某些站点时,会抛出java.lang.OutOfMemoryError异常。 例如: 如何避免这个问题 jsoup1.7.1似乎get方法将所有内容都存储在内存中,因此当您加载一个大内容时,就会得到OOME 据我所知,您的选择包括: 加载一个较小的文档,您试图加载的文档似乎很大。内存特别是在手持设备上 将文档分块预处理,然后一次处理一个文档,这样就不会占用太多内存 在内存较大的环境中运行程序 弄清楚Jsoup是否可以执行缓冲IO,如果不使用其他库或编写自

尝试使用Android上的Jsoup连接到某些站点时,会抛出java.lang.OutOfMemoryError异常。 例如:

如何避免这个问题


jsoup1.7.1

似乎get方法将所有内容都存储在内存中,因此当您加载一个大内容时,就会得到OOME

据我所知,您的选择包括:

  • 加载一个较小的文档,您试图加载的文档似乎很大。内存特别是在手持设备上
  • 将文档分块预处理,然后一次处理一个文档,这样就不会占用太多内存
  • 在内存较大的环境中运行程序
  • 弄清楚Jsoup是否可以执行缓冲IO,如果不使用其他库或编写自己的库。使用缓冲IO时,一次只能读取和处理数据块,所以不会占用太多内存空间

  • OutOfMemoryError表示应用程序使用的内存超过了可用内存。(呸!)

    你的选择是:

    • 增加应用程序允许使用的内存量

    • 减少应用程序使用的内存量。例如:

      • 在使用jsoup解析整个文档之前,不要读取并缓冲整个文档

      • 确保在内存中没有保存太多正在爬行的页面的信息。要么将其写入文件系统,要么动态地“减少”它

      • 分析应用程序的内存使用情况,以查找内存过度使用导致的泄漏和其他问题


    整个HTML页面的大小约为200Kb。别以为这太多了。您可以发布java内存设置吗?DVM的堆大小为16MB。不是在所有设备中,而是最低限度。
    Jsoup.connect("http://www.xbox360achievements.org/game/grand-theft-auto-iv/guide/").get();