Кто нибудь делал программу на JavaFX?
Заметил одну неприятную особенность, когда начинаешь менять размеры окна программы (Stage), то программа начинает не хило жрать память, может доходить до 900 мегабайт если очень много хаотично менять размер.
Вызов сборщика мусора ничего не даёт, так как он не вызывается по ходу. Если даже Stage закрывается, то все равно висит в пямяти...
На иностранных формумах нашел подобную проблему, и никто не знает как вручную чистить память хотя бы при закрытии Stage.
Может быть кто-то из админов, исходя из своего опыта, знает как чистить?
Единственное, что мне пришло в голову, это исользовать Thread.Sleep(50) в перехватчике событий мыши -setOnMouseDragged, это влияет на плавность, совсем немгого, но жрет прилично меньше оперативки.
Программа visualVM показывает, что память занята int[] и byte[]. Картинку прикладываю.
root.setOnMousePressed(new EventHandler() {
public void handle(MouseEvent event) {
if (event.getX() > primaryStage.getWidth() - 20
&& event.getX() < primaryStage.getWidth()
&& event.getY() > primaryStage.getHeight() - 20
&& event.getY() < primaryStage.getHeight()) {
resizebottom = true;
dx = primaryStage.getWidth() - event.getX();
dy = primaryStage.getHeight() - event.getY();
}
else {
resizebottom = false;
xOffset = event.getSceneX();
yOffset = event.getSceneY();
}
System.gc();
}
});
root.setOnMouseDragged(new EventHandler() {
public void handle(MouseEvent event) {
if (!resizebottom) {
primaryStage.setX(event.getScreenX() - xOffset);
primaryStage.setY(event.getScreenY() - yOffset);
}
else {
try {
Thread.sleep(50);
X = event.getX() + dx;
Y = event.getY() + dy;
// условие, чтобы нельзя было уменьшить окно до сколько угодно
if(X>300){
primaryStage.setWidth(X);
}
if(Y>250){
primaryStage.setHeight(Y);
}
//InterruptedException
} catch ( Exception e) {
e.printStackTrace();
}
}
System.gc();
}
});

ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Потестил программу свою на linux, там память вообще не жреться. На винде и линухе с обычным моником (full hd) тоже всё норм, но у меня моник 4к )))
Либо просто запретить менять размер окна.
Сам с JavaFX подружился всего недельку назад.
Но причем тут сборщик мусора? У вас на скрине есть колонка с количеством живых объектов, он тоже увеличивается с той же скоростью?