Uploaded image for project: 'Jetspeed 2'
  1. Jetspeed 2
  2. JS2-864

Release render buffers (PortletContent) after rendering


    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.2.0
    • Fix Version/s: 2.2.0
    • Component/s: Aggregation
    • Labels:


      When rendering with thousands of users, we are seeing large buffers being left in memory and not released.
      When Java goes to garbage collect, the buffers are not being release due to references to these buffers being held. This is described in JS2-800. Combining this fix with JS2-800 should enable the garbage collector to properly free up these per request buffers.

      Looking at heap dump, we can see:

      1,308,968,904 (81%) [40] 4 org/apache/jetspeed/container/window/impl/PortletWindowAccessorImpl 0x5a459e98
      1,308,968,864 (81%) [48] 4 java/util/Collections$SynchronizedMap 0x5a459ee8
      1,308,968,752 (81%) [64] 3 java/util/HashMap 0x5a459eb8
      1,308,968,688 (81%) [81,320] 20,326 array of java/util/HashMap$Entry 0xaf52a080

      The above problem is addressed in JS2-800, where we can limit the number of PortletWindows in memory
      Combined with too many portlet windows in memory, the portlet content render buffers are held on to, and never released.
      This bug fix aids the garbage collection algorithm by "releasing" the buffers upon render completion
      Note I have seen some very large buffers held on to and never released.
      By setting the streams to null, we can try to aid the garbage collection into freeing these buffers




            • Assignee:
              taylor David Sean Taylor
              taylor David Sean Taylor
            • Votes:
              0 Vote for this issue
              0 Start watching this issue


              • Created: