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

java.lang.ObjectName use of String.intern() causes major performance issues at scale

XMLWordPrintable

      BUI interactive performance analysis of the ops-center product at scale has shown that
      there are significant slow-downs in the BUI interactions due to the time spent in ObjectName creation.

      This in turn turns out to be due to the call to String.intern() in the ObjectName for the canonical string.

      String.intern() is designed for constant strings, it's implemented in C/C++ in the hotspot core code, and it has a fixed-size hashmap of around 20K entries and if more than this number of strings are interned, the performance degrades linearly since there are hash collisions and the code has to search down linked lists.

      Ops Center, when managing ~500 systems, had approx 70000 ObjectNames and hence the String.intern() calls from ObjectNames are completely overloading the hashmap, making
      each call to String.intern() extremely expensive.

      By dropping this intern, we were able to speed up certain complex calls which weren't just manipulating ObjectNames by a factor of 2.

            fparain Frederic Parain
            nstephen Nick Stephen (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: