标签: stringbuilder

带有stringbuilder的java outOfMemoryError

当我调用这个方法时,我得到一个java outOfMemoryError - 我在循环中使用它来按顺序解析许多大文件.我的猜测是result.toString()在循环过程中没有正确收集垃圾.如果是这样,我该如何解决?

private String matchHelper(String buffer, String regex, String method){
    Pattern abbrev_p = Pattern.compile(regex);//norms U.S.A., B.S., PH.D, PH.D.
    Matcher abbrev_matcher = abbrev_p.matcher(buffer);
    StringBuffer result = new StringBuffer();
    while (abbrev_matcher.find()){
            abbrev_matcher.appendReplacement(result, abbrevHelper(abbrev_matcher));
    }
    abbrev_matcher.appendTail(result);
    String tempResult = result.toString(); //ERROR OCCURS HERE
  return tempResult;

}
Run Code Online (Sandbox Code Playgroud)

java string heap stringbuilder out-of-memory

7
推荐指数
2
解决办法
3万
查看次数

将空白添加到stringbuilder?

如何将空格附加到字符串生成器?我需要插入90个空格,在VB我有这个代码,但我很困惑如何写c#任何人可以帮助我

Dim S As New StringBuilder("HELLO")
S.Append(" "c, 90)
S.Append("WORLD")
MessageBox.Show(S.ToString) 
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# stringbuilder

7
推荐指数
2
解决办法
1万
查看次数

StringBuilder的RAM消耗是什么样的?

我们有一些操作,我们正在进行大量的大型字符串连接,并且最近遇到了内存不足异常.不幸的是,调试代码不是一种选择,因为这是在客户站点发生的.

因此,在研究代码的大修之前,我想问一下:对于大型字符串,StringBuilder的RAM消耗特性是什么?

特别是它们与标准字符串类型相比.字符串的大小超过10 MB,我们似乎遇到了大约20 MB的问题.

注意:这不是速度而是RAM.

.net ram stringbuilder

6
推荐指数
2
解决办法
2616
查看次数

是否有一个更快的方法,然后StringBuilder最多9-10步字符串连接?

我有这个代码来连接一些数组元素:

StringBuilder sb = new StringBuilder();
private RatedMessage joinMessage(int step, boolean isresult) {
        sb.delete(0, sb.length());
        RatedMessage rm;
        for (int i = 0; i <= step; i++) {
            if (mStack[i] == null)
                continue;
            rm = mStack[i].getCurrentMsg();// msg is built upfront, this just returns, it's a getter method call
            if (rm == null || rm.msg.length() == 0)
                continue;
            if (sb.length() != 0) {
                sb.append(", ");
            }
            sb.append(rm.msg);
        }
        rm.msg=sb.toString();
        return rm;
    }
Run Code Online (Sandbox Code Playgroud)

重要的是阵列最多可容纳10个项目,所以它并不多.

我的跟踪输出告诉我这个方法被称为18864次,在此方法中花费了16%的运行时间.我可以优化更多吗?

java stringbuilder concatenation

6
推荐指数
2
解决办法
2011
查看次数

匿名函数未返回正确的字符串

我有以下代码:

delegate string CD();
void MyFunction()
{
    stringBuilder.Append((CD)delegate()
    {
        switch(whatever)
        {
            case 1 : return "A";
            ...
            default: return "X";
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

但是stringBuilder附加文本MyNamespace.MyClass+CD而不是A或X.为什么会这样?

c# lambda stringbuilder delegates

6
推荐指数
2
解决办法
221
查看次数

具有显着变化长度的输入的最佳StringBuffer初始容量是多少?

大家下午好,我正在使用java.lang.StringBuilder存储一些字符.我不知道我要提前存储多少个角色,除了:

  1. 60%的时间,它只有(确切地说)7个字符
  2. 39%的时间,(大约)3500个字符
  3. 1%的时间,大约是20k个字符

我们如何计算应该使用的最佳初始缓冲区长度?

目前我正在使用,new java.lang.StringBuilder(4000)但这只是因为我以前懒得思考.

java language-agnostic math stringbuilder buffer

6
推荐指数
1
解决办法
3295
查看次数

为什么以下条件运算符在包含Nullable类型的StringBuilder中奇怪地工作?在C#?

StringBuilder htmlResp=new StringBuilder();
int? cuID= 1;
string cuName="Tom";
string cuEmpID="ZXCV";

htmlResp .Append( "<option value=\"" + cuID.Value + "\">" + cuName+" ("+cuEmpID==""? "-":cuEmpID+")"+  "</option>");
html.Resp.ToString();
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么上面的代码(从实际代码中修改)总是给我奇怪的结果:"ZXCV"而不是"Tom(ZXCV)".

有没有人知道背后的原因,如果可能的话可以提供参考?

.net c# stringbuilder nullable conditional-operator

6
推荐指数
1
解决办法
340
查看次数

是否需要使用stringbuilder?

我们都知道连接字符串会导致效率问题,特别是在循环中.我被教导用来StringBuilder防止这些问题.

所以这:

str += someotherstring
Run Code Online (Sandbox Code Playgroud)

变成这样:

StringBuilder sb = new StringBuilder();   
sb.AppendLine(someotherstring);
Run Code Online (Sandbox Code Playgroud)

但我的理解是.NET框架3.5及更高版本中的CLR足够智能,可以为这两种方法输出相同的IL.那么我是否应该在我的团队代码评论中强制执行stringbuilder?

编辑:我认为Servy在评论中点头:

在连接编译时已知的许多字符串时就是这种情况.因此,当在编译时连接多个字符串时,不需要使用SB.当在编译时连接许多未知的字符串时,它不能这样做

c# string clr stringbuilder cil

6
推荐指数
2
解决办法
1108
查看次数

如何从ArrayList获取String值并将它们存储在Java 8中用逗号分隔的单个字符串中?

我有一个带有一些字符串的ArrayList.我想将ArrayList中的数字列表存储在由逗号分隔的单个字符串中,如下所示.

String s = "350000000000050287,392156486833253181,350000000000060764"
Run Code Online (Sandbox Code Playgroud)

这是我的清单:

   List<String> e = new ArrayList<String>();

    e.add("350000000000050287");
    e.add("392156486833253181");
    e.add("350000000000060764");
Run Code Online (Sandbox Code Playgroud)

我一直试图通过以下方式实现:

     StringBuilder s = new StringBuilder();
    for (String id : e){

        s.append(id+",");

    }
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,这会在最后添加一个逗号,我不希望这样.最好的方法是什么?

谢谢

java stringbuilder list java-8

6
推荐指数
2
解决办法
3414
查看次数

StringBuilder/StringBuffer,内存中包含文字字符串

示例代码:

StringBuffer sb = new StringBuffer("hi");
sb = null;
Run Code Online (Sandbox Code Playgroud)

题:

即使在StringBuffer被垃圾收集之后,文字字符串"hi"会以某种方式保留在内存中吗?或者它只是用于为StringBuffer创建一个char数组,然后永远不会放在内存中?

java string stringbuilder garbage-collection stringbuffer

6
推荐指数
1
解决办法
193
查看次数