发现WebService占内存非常厉害,而且没有下降。不知道各位有什么好的办法?
再有在初始化StringBuilder时并不知道使用中会碰到的最大的长度是多少,有什么好的办法来处理?
如果一次性分配太大的内存块,程序运行明显很慢(不是因为机器内存少的问题)。但分配小了又有可能碰到较大的内容。

解决方案 »

  1.   

    StringBuilder str=new StringBuilder()
    这样写就行,当长度超过SringBuilder默认长度时会自动增长,类似于ArrayList,每次长度增长为原来的一倍
      

  2.   

    这样写过,一用就溢出了,因为这个量是生成后传到一个API函数的接口中去,所以也不排除有可能是没有设置初始长度,里边处理时有问题。
      

  3.   

    如果api使用,并返回数据,必须初始化一个长度。
    如果可以,每个对象用完了手工释放,一般调用dispose(),最后结束时再gc一下。
      

  4.   

    像StringBuilder这样的量如何释放回收资源?
      

  5.   

    我现在也在用Web service,但好像没碰到比较明显的问题啊
      

  6.   

    顺贴再问一个其它问题:正则表达式的问题
    ----------------------------------------
    References Cited  [Referenced By]
    U.S. Patent Documents
    3024469Mar., 1962Lewis et al.4/DIG.3048854Aug., 1962Miller4/253.
    ----------------------------------------
    要提取到3024469和3048854,表达式怎么写?
      

  7.   

    这样子写咋样?[0-9]{1,}[a-zA-Z]{3}[\.]{1}[\,]{1}
      

  8.   

    像StringBuilder这样的量如何释放回收资源?系统的GC会自动回收的
      

  9.   

    1、StringBuilder 不需要初始长度的,系统会自动配倍增长。但如果,通常情况下的长度可以估计,也可以指定一个长度(比通常值稍大点,不一定非要最大值)。
    2、一般也不需要考虑资源回收问题,因为系统在一定时机会自动处理。但是,如果是在大量循环中使用了stringbuilder,可以手动释放一下,用dispose()就可以了。
    我不知道你是怎么用的,但是有可能并不是因为stringbuilder的原因才让内存增加,别的原因如:dataset、arraylist等,甚至系统原因都会导致内存持续增加。
      

  10.   

    stringbuilder而dispose()方法吗?
    还是可以用其他方法来释放?
      

  11.   

    w3wp.exe的内存一直在往上涨,工作都做完了也没有降下来。也用过GC了,不管用。
    另外问一下,需要每次用完StringBuilder后做一下remove吗?现在也做了,没有任何用处。
      

  12.   

    WebService 是否有没有释放非托管资源? 因为说的太普通,很难判断StringBuilder,默认好像是100(不肯定),具体要看你写入的东西是什么,是一个4~5M的文本
    还是其他什么的,都有可能有问题.
    StringBuilder用完之需要Dispose就可以,没有必要Remove