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

MemoryLeak in TableColumn.observableProperties list

    Details

      Description

      Running TableViewMemTest with heap size 84m fails with OutOfMemory error after
      38 iterations. TableViewMemTest just creates new TableView object of size 100x10 (columns x rows)
      on each iteration and removes previously created one. Note, table columns and table data objects
      are statically created, so they are not created on each iteration.

      MemoryAnalyzer shows that there is memory leak in TableColumn.observableProperties list.
      This array constantly grows. As result the number of com.sun.javafx.scene.control.WeakListChangeListener
      objects is increased by 27,310 during 10 test iterations.
      I am attaching heap dump profiles gotten after 10th test iteration and 20th iterations.


      It was mentioned in RT-15243 "TableView data keep references to TableViews even they don't exist any more."
      that this problem likely will go away once RT-14927 is fixed. So, filing this bug at least till RT-14927 is fixed.

      Steps to run the test:
      1) compile TableViewMemTest.java
      2) java -Xmx84m -cp ... TableViewMemTest

      There are 4 modes to run the test:
      -mode staticall // default, table data and table columns are static
      -mode staticdata // table data are static, table columns are created on each iteration
      -mode staticcols // table columns are static, table data are created on each iteration
      -mode dynamic // table data and table columns are created on each iteration.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jgiles Jonathan Giles
                Reporter:
                epavlova Ekaterina Pavlova
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Imported: