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);
}
}
}
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);
}
}
}
- is blocked by
-
JDK-8114994 Memory leak with TreeCell
-
- Closed
-