Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-5030946

StringBuffer should have a append(String, int start, int length) method

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 1.4.2
    • core-libs
    • x86
    • windows_2000



      Name: jl125535 Date: 04/13/2004


      A DESCRIPTION OF THE REQUEST :
      java.lang.StringBuffer should have a append(String, int start, int length) method to avoid creating temporary Strings or CharSequence objects.

      JUSTIFICATION :
      I've a code block that needs to build new strings from parts of other strings that wastes 30Kbyte of memory (that gets collected by the GC) to construct ~1000 Strings.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
        To be able to write the test program like this:

      NOTE: " Hallo " and " Welt " are only place holders for String objects in the real application.

      public class Test {
        public static void main(String[] args) {
          for(int i=0 ; i<1000 ; ++i) {
             StringBuffer sb = new StringBuffer();
             sb.append(" Hallo ", 1, 5);
             sb.append(" Welt ", 0, 5);
             System.out.println(sb.toString() );
          }
        }
      }
      ACTUAL -
      The line from the hprof run:

      TRACE 242:
      Test.main(Test.java:4)
      TRACE 245:
      java.lang.String.substring(String.java:1446)
      Test.main(Test.java:5)
      TRACE 247:
      java.lang.String.substring(String.java:1446)
      Test.main(Test.java:6)
      TRACE 249:
      java.lang.StringBuffer.toString(StringBuffer.java:1256)
      Test.main(Test.java:7)

                percent live alloc'ed stack class
       rank self accum bytes objs bytes objs trace name
          1 55.29% 55.29% 601448 220 601448 220 1 [I
          2 8.83% 64.12% 96000 2000 96000 2000 250 java.nio.HeapCharBuffer
          3 5.91% 70.03% 64304 431 64304 431 1 [C
          4 4.41% 74.44% 48000 1000 48000 1000 243 [C
          5 4.18% 78.62% 45416 214 45416 214 1 [B
          6 2.21% 80.83% 24000 1000 24000 1000 249 java.lang.String
          7 2.21% 83.03% 24000 1000 24000 1000 247 java.lang.String
          8 2.21% 85.24% 24000 1000 24000 1000 245 java.lang.String
          9 2.21% 87.45% 24000 1000 24000 1000 242 java.lang.StringBuffer


      ---------- BEGIN SOURCE ----------
      public class Test {
        public static void main(String[] args) {
          for(int i=0 ; i<1000 ; ++i) {
             StringBuffer sb = new StringBuffer();
             sb.append(" Hallo ".substring(1, 5));
             sb.append(" Welt ".substring(0, 5));
             System.out.println(sb.toString() );
          }
        }
      }
      ---------- END SOURCE ----------
      (Incident Review ID: 250048)
      ======================================================================

            mmcclosksunw Michael Mccloskey (Inactive)
            jleesunw Jon Lee (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: