获取java.lang.OutOfMemoryError异常?

时间:2012-04-07 09:31:29

标签: android memory

Android编程新手。获得关注错误。

04-07 14:49:05.452: ERROR/AndroidRuntime(1566): FATAL EXCEPTION: main
        java.lang.OutOfMemoryError
        at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
        at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145)
        at java.lang.StringBuilder.append(StringBuilder.java:216)
        at com.myapp.StartupActivity.onListItemClick(StartupActivity.java:87)
        at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
        at android.widget.AdapterView.performItemClick(AdapterView.java:292)
        at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
        at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
        at android.widget.AbsListView$1.run(AbsListView.java:3168)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4340)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

使用标签布局,有三个用于控制标签的活动。我想我跨越了可用于我的应用程序的内存堆。有人告诉我当你离开标签时如何销毁物品?以下代码发生错误。

String separator = "|"
String myString = "";
for(String string : Mylist)
{
    myString += myString + string + separator;
}

1 个答案:

答案 0 :(得分:1)

尝试String separator = "\\|" 而是String separator = "|"

使用java使用管道符号时出现问题,或者您可以使用Pattern.quote("|")

<强> @Qerub 值得注意的是,只有在将表达式字符串编译到java代码中时才需要双斜杠。

Java 编译器需要一个斜杠,以便它在表达式String对象中存储一个文字斜杠。这不是正则表达式所特有的,所有在类文件中编译的Java字符串都以这种方式工作。如果要在已编译的类文件中的String中使用一个斜杠,请在Java源代码中键入两个斜杠。

如果正则表达式在运行时传递到Java程序 - 通过命令行参数或属性值 - 则不需要第一个斜杠。

正则表达式解析器需要另一个斜杠,以便将管道视为文字字符。表达式解析器不关心字符串是编译到类文件中还是在运行时提供。

Source code: \\|

which compiles to...

Class file: \|

现在由正则表达式解析器读取为...

表达式解析器视为:|

虽然我们在split()中使用了它,但它被视为 alteration ,这意味着字符串被每个字符分开

源代码:“查询”

"query".split("|")给出结果

q
u
e
r
y