gpt4 book ai didi

android - java.lang.OutOfMemoryError 如何解决这个问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:36 25 4
gpt4 key购买 nike

我找到了一个代码,但有时会出错:

StringBuilder strHeaders = new StringBuilder();
char c;
while ((c = (char)stream.read()) != -1) {
strHeaders.append(c);
if (strHeaders.length() > 5 && (strHeaders.substring((strHeaders.length() - 4), strHeaders.length()).equals("\r\n\r\n"))) {
// end of headers
break;
}
}

日志

java.lang.OutOfMemoryError
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95)
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:140)
at java.lang.StringBuilder.append(StringBuilder.java:125)
at myApp.activity.com.getFromPLS.retreiveMetadata(getFromPLS.java:98)
at myApp.activity.com.getFromPLS.refreshMeta(getFromPLS.java:76)
at myApp.activity.com.myApp$1.run(myApp.java:371)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)

此行错误

strHeaders.append(c);

请问有人可以帮我解决这个问题吗?

最佳答案

由于 char 是无符号类型,您的 while 循环条件将永远不会得到满足,即使在 stream.read() 开始返回之后 - 1.如果您没有找到 "\r\n\r\n" 序列,循环将永远不会结束。像这样编写循环:

StringBuilder strHeaders = new StringBuilder();
int c;
while ((c = stream.read()) != -1) { // DO NOT cast to char here!
strHeaders.append((char) c);
final int len = strHeaders.length();
if (len > 5 && (strHeaders.substring(len - 4)).equals("\r\n\r\n"))) {
// end of headers
break;
}
}

请注意,许多服务器会错误地返回 "\n\n" 作为表示 header 结束的空行。有些还可能返回 "\r\r"。除非您控制服务器输出并保证它会看到 "\r\n\r\n",否则您的空行检测方法需要以更健壮的方式编写。

关于android - java.lang.OutOfMemoryError 如何解决这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8960447/

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