0

我尝试在流氓中操纵大字符串并不断收到以下错误:

java.lang.OutOfMemoryError:Java 堆空间(内部错误)。

我在 eclipse.ini 文件中更改了以下参数:

-XX:MaxPermSize=1024m
-Xms256m 
-Xmx1024m

但这没有任何改变。

代码如下所示:

public str removeBB(str file){
while(contains(file, "aB")){
    index1 = findFirst(file, "aB");
    index2 = (findFirst(file, "Ba") + 2);

    subString1 = substring(file, 0, index1);
    subString2 = substring(file, index2);

    file = subString1 + subString2;
}

return file;
}

我怎样才能防止这个错误?有没有办法编写该代码以提高内存效率?

4

1 回答 1

1

我没有立即明白为什么这段代码会破坏内存,可能是因为它在示例字符串中发现 index2 小于 index1 ?

但无论如何,我会写一些类似使用正则表达式和访问的东西,而不是使用 indexOf:

visit (file) { case /aB.*Ba/ => "" }

此外,字符串切片具有更好的语法,而不是子字符串:

rascal>"asdlhfasldfhslf"[5..8] str: "fas"

于 2013-10-05T19:11:19.453 回答