JAVA将字符串导致,java-由大字符串引起的OutOfMemoryException

我正在使用以下方法从webapi捕获数据:

public static String sendRequest(String requestURL, String data)

throws IOException {

URL url = new URL(requestURL + "?" + data);

URLConnection conn = url.openConnection();

conn.setReadTimeout(10000);

BufferedReader in = new BufferedReader(new InputStreamReader(

conn.getInputStream()));

String inputLine;

StringBuilder answerBuilder = new StringBuilder("");

try {

while ((inputLine = in.readLine()) != null)

answerBuilder.append(inputLine);

in.close();

} catch (Exception e) {

}

return answerBuilder.toString();

}

对于某些请求,这会由于HeapSize太小而导致OutOfMemoryError:

(...)Caused by: java.lang.OutOfMemoryError: (Heap Size=17927KB, Allocated=14191KB, Bitmap Size=2589KB)

at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95)

at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:132)

at java.lang.StringBuilder.append(StringBuilder.java:272)

at java.io.BufferedReader.readLine(BufferedReader.java:423)

at com.elophant.utils.HTTPUtils.sendRequest(HTTPUtils.java:23)

at (..)

我已经从正常的String操作(如String answer = inputLine)交换为StringBuilder,但这没有帮助.我怎么解决这个问题?通过export JVM_ARGS =“-Xmx1024m -XX:MaxPermSize = 256m”来增加最大堆大小并不是一个选项,因为它是一个Android应用程序.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值