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

Memory Leak for TreeItem

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P2 P2
    • None
    • 7u13
    • javafx
    • None
    • runtime environment: Win 7 32/64 bit, JDK1.6_U16 / JDK1.7_07, JAVAFX 2.2.5.

      when keeping expanding and collapsed treeitem, the memory usage is keeping increasing and no GC happending. when set -Xmx's value, the program crashed with OutOfMemoryError.


      Here is the source code:

      package com.icbc;

      import javafx.application.Application;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Accordion;
      import javafx.scene.control.Label;
      import javafx.scene.control.TitledPane;
      import javafx.scene.control.TitledPaneBuilder;
      import javafx.scene.control.TreeItem;
      import javafx.scene.control.TreeView;
      import javafx.stage.Stage;

      public class TestMenu extends Application {

      private void init(Stage primaryStage) {

      Group root = new Group();

      primaryStage.setResizable(false);

      primaryStage.setScene(new Scene(root, 180, 460 - 22 * 5));

      Accordion accordion = new Accordion();

      mock(accordion);
      // accordion.getPanes().add(t1);

      root.getChildren().add(accordion);

      }

      public double getSampleWidth() {
      return 150;
      }

      public double getSampleHeight() {
      return 150;
      }

      @Override
      public void start(Stage primaryStage) throws Exception {

      init(primaryStage);

      primaryStage.show();

      }

      public static void main(String[] args) {
      launch(args);
      }

      /**
      * ����
      *
      * @param accordion
      */
      private static void mock(Accordion accordion) {
      for (int i = 0; i < 1; i++) {
      //1���˵�
      TitledPane appTitledPane = TitledPaneBuilder.create().text("Testing")
      .prefWidth(180).build();
      accordion.getPanes().add(appTitledPane);
      TreeView appMenuTreeView = new TreeView();
      appMenuTreeView.setPrefWidth(150);
      appMenuTreeView.setPrefHeight(460 - 22 * 5);
      appMenuTreeView.setShowRoot(false);
      TreeItem appMenuTreeRoot = new TreeItem();
      appMenuTreeView.setRoot(appMenuTreeRoot);
                              
      for (int j = 0; j < 100; j++) {
      //2��
      Label treeItem = new Label("System Management" + j);
      TreeItem appMenuTreeItem = new TreeItem(treeItem);
      //3��
      for (int k = 0; k < 10; k++) {
      Label treeItem1 = new Label("SM"+ j + k);
      TreeItem<String> appMenuTreeItem1 = new TreeItem(treeItem1);
      appMenuTreeItem.getChildren().add(appMenuTreeItem1);
      // appMenuTreeItem.setExpanded(true);
      }
      appMenuTreeRoot.getChildren().add(appMenuTreeItem);
      }
      appTitledPane.setContent(appMenuTreeView);
      }
      }
      }

            jgiles Jonathan Giles
            slu Songtao Lu (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: