JavaFX:TouchGesture内存泄漏?

在我的一个项目中,最近几天我在与内存泄漏作斗争(是……“耦合”),我得出的结论是可能存在与触摸/滚动手势有关的问题。 在下面的示例中,我有两个按钮。 第一个创建具有一千行的列表视图,第二个将其删除。

bildschirmfoto-2016-01-29-um-18-02-58

我做了以下观察:

  1. 当我单击“创建”并立即单击“销毁”时,所有内容都会被垃圾收集。
  2. 当我单击“创建”并使用滚动条向下滚动,然后单击“销毁”时,一切将被垃圾收集。
  3. 当我单击“创建”,然后使用手势向下滚动(使用Mac Magic Mouse)时,垃圾收集失败。

我使用了JDK附带的jvisualvm ,并使用“ Sampler”选项卡查看堆空间。 我筛选了“ TestItem”类,然后可以看到在按下“创建”按钮后,那些项始终仍在内存中,它们是为最后一个ListView创建的。

bildschirmfoto-2016-01-29-um-17-34-16

当我转储堆并使用“ Eclipse Memory Analyzer”对其进行分析时,我可以看到很可能是ScrollGesture保留了对列表视图/数据的引用。

bildschirmfoto-2016-01-29-um-17-36-02

有人可以确认吗? 这是一个已知的错误? 我在Java错误数据库中找不到与此问题相关的任何内容。

import java.util.ArrayList;
import java.util.List;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;public class MemoryLeakListViewApp extends Application {@Overridepublic void start(Stage primaryStage) throws Exception {BorderPane pane = new BorderPane();Scene scene = new Scene(pane);Button createButton = new Button("Create");createButton.setOnAction(evt -> {ListView listView = new ListView();List children = new ArrayList();for (int i = 0; i < 1000; i++) {children.add(new TestItem("Row " + i));}listView.getItems().setAll(children);pane.setCenter(listView);         });Button deleteButton = new Button("Destroy");         deleteButton.setOnAction(evt -> {pane.setCenter(null);});HBox box = new HBox();box.getChildren().addAll(createButton, deleteButton);pane.setTop(box);primaryStage.setScene(scene);primaryStage.setWidth(800);primaryStage.setHeight(800);primaryStage.show();}static class TestItem {private String name;public TestItem(String name) {this.name = name;}@Overridepublic String toString() {return name;}}public static void main(String[] args) {launch(args);}
}

翻译自: https://www.javacodegeeks.com/2016/02/javafx-touchgesture-memory-leak.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第2章 状态机思维与状态机变量

12312312转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7590199.html

荣耀v40可以升级华为鸿蒙,网传荣耀V40机型也能升级鸿蒙OS 首批更新机型有望是这5款...

此前华为官方曾透露&#xff0c;所有可以升级到EMUI11系统的华为荣耀手机以后都可以升级更新到华为鸿蒙2.0系统&#xff0c;首批可以升级至EMUI11的手机和平板电脑共有55款。后续&#xff0c;又有传闻称&#xff0c;麒麟710处理器以上机型很可能都能更新EMUI11&#xff0c;也就…

Calendar

1. before&#xff0c;after 方法 &#xff0c;源码为&#xff1a; public boolean after(Object when) {return when instanceof Calendar&& compareTo((Calendar)when) > 0;} 这两方法参数类型是 Object 但只有是 Calendar 类型时才有可能返回true。转载于:https…

Android检测是否有悬浮窗,Android 获取判断是否有悬浮窗权限的方法

现在很多应用都会用到悬浮窗&#xff0c;很多国产rom把悬浮窗权限加入控制了&#xff0c;你就需要判断是否有悬浮窗权限&#xff0c;然后做对应操作。Android 原生有自带权限管理的&#xff0c;只是被隐藏了。看android源码在android.app下就有个AppOpsManager类。类说明如下&a…

在虚拟机中的Ubuntu搭建java开发环境

前提&#xff1a; 安装好虚拟机 在虚拟机中装好了Ubuntu系统 以上两步请参见我的博客&#xff08;python进阶&#xff09; 1 安装JDK 1.1 到官网下载jdk压缩包并保存在本地 jdk1.8&#xff1a;点击前往 1.2 在Ubuntu中创建一个文件用于存放下载好的jdk文件 利用 rz 命令将下载到…

mockito_Mockito和Hamcrest的试驾制造商

mockito过去&#xff0c;很多人问我是否测试吸气剂和吸气剂&#xff08;属性&#xff0c;属性等&#xff09;。 他们还问我是否测试我的建筑商。 在我看来&#xff0c;答案取决于情况。 当使用遗留代码时&#xff0c;我不会费心去测试数据结构&#xff0c;这意味着对象只带有ge…

导入一个android项目需要改什么意思,导入别人的Android Studio项目前要修改的文件...

AS在导入项目过程中会检查项目中所需的gradle版本 sdk版本等本地是否有, 没有的话就会从官网下载, 众所周知要想从谷歌官网下载东西在我朝是十分困难的.所以需要修改成本地有的.主要改三个个第一个地方,修改android gradle插件版本号1.找到项目目录下的build.gradleproject/bui…

如何在单个API中支持Java 6、8、9

借助jOOQ 3.7&#xff0c;我们终于添加了对Java 8功能的正式支持。 这为许多不错的改进打开了大门&#xff0c;例如&#xff1a; 创建结果流 try (Stream<Record2<String, String>> stream DSL.using(configuration).select(FIRST_NAME, LAST_NAME).from(PERSON)…

Struts2中通过Ajax传递json数据

1、导入Struts2所需要的jar包 下载Struts2的jar包时&#xff0c;可以下载struts-2.5.13-min-lib.zip&#xff0c;然后放到项目的/WebContent/WEB-INF/lib路径下struts-2.5.13-min-lib只包含以下jar包&#xff1a;   commons-fileupload-1.3.3.jar commons-io-2.5.jar commons…

c语言中 各种括号应成对出现,C语言::验证花括号成对出现

题目要求编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。注意&#xff1a;你不必担心注释内部、字符串常量内部和字符常量形式的花括号。算法分析我们先判断左花括号的数量是否相等。如果左右花括号数量不等,肯定不成对&#xff01;如果左右…

[js高手之路] html5 canvas系列教程 - 线条样式(lineWidth,lineCap,lineJoin,setLineDash)

上文&#xff0c;写完弧度与贝塞尔曲线[js高手之路] html5 canvas系列教程 - arcTo(弧度与二次,三次贝塞尔曲线以及在线工具)&#xff0c;本文主要是关于线条的样式设置 lineWidth: 设置线条的宽度&#xff0c;值是一个数值&#xff0c;如lineWidth 5. 画3条不同宽度的线条&am…

在线斯诺克html5,用HTML 5打造斯诺克桌球俱乐部

本文介绍了如何利用HTML5技术来打造一款非常酷的斯诺克桌球游戏&#xff0c;文章中详细地列出了开发的全过程&#xff0c;并解说了实现这个游戏的几个关键点。在文章末尾我向大家提供了游戏的在线实例页面和源码下载链接&#xff0c;如果你只是想玩玩(需要使用支持HTML5的浏览器…

jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第3部分

jpa jsfPrimefaces AutoComplete&#xff0c;JSF转换器 这篇文章从第一部分和第二部分继续。 JSF拥有Converter工具&#xff0c;可以帮助我们从用户视图中获取一些数据并将其转换为从数据库或缓存中加载的对象。 在“ com.converter”包中&#xff0c;创建以下类&#xff1a;…

会话保持 (转)

http://www.cnblogs.com/kellyseeme/p/7599061.html 理论部分 会话也就是session&#xff0c;主要存储在服务器端&#xff0c;用来识别用户的身份。 在浏览器中向服务端发送请求的时候&#xff0c;不是http协议就是https协议&#xff0c;而两种协议在发送请求的时候&#xff0c…

html url js编码顺序,前端url编码

为什么要编码&#xff1a;Http协议中参数的传输是"keyvalue"这种简直对形式的&#xff0c;如果要传多个参数就需要用“&”符号对键值对进行分割如"?name1value1&name2value2"&#xff0c;这样在服务端在收到这种字符串的时候&#xff0c;会用“&a…

AWS SQS和Spring JMS集成

Amazon WEB服务为我们提供了SQS消息传递服务。 sqs的java sdk与JMS兼容。 因此&#xff0c;可以将SQS与spring提供的JMS集成框架集成在一起&#xff0c;而不是将SQS用作简单的spring bean。 我将使用spring-boot和gradle。 gradle文件&#xff1a; group com.gkatzioura.sq…

手势相关-解决手势冲突

解决UITableview点击事件与手势的冲突 1.签手势代理 <UIGestureRecognizerDelegate> 2.是tableview点击事件则屏蔽手势 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([touch.view isKindOfClass:[UIS…

html动画用css还是js,javascript与css3动画结合使用小结

当Html5,css3已渐渐成为主流的时候&#xff0c;我还非常习惯的用js去做一些简单的动画。因为在桌面浏览器上&#xff0c; 并非所有的都支持css3。用户也倒是很奇怪&#xff0c;用户习惯并不是每个用户都可以被培养。总有不少人会觉得win7.win8没xp好用。但手机方面就大不一样了…

洛谷 P3146 [USACO16OPEN]248

P3146 [USACO16OPEN]248 题目描述 Bessie likes downloading games to play on her cell phone, even though she doesfind the small touch screen rather cumbersome to use with her large hooves. She is particularly intrigued by the current game she is playing.The g…

java将HTML文件转化为pdf文件,如何使用Java将HTML网页转换为PDF文件

我一直在互联网上搜索如何使用Java将HTML页面转换为PDF文件。我发现了很多指针&#xff0c;简而言之&#xff0c;它们不起作用或难以实现。我也下载了一个商业产品&#xff0c;pdf4ml;该API是我很乐意与之合作的&#xff0c;除了当我在维基百科上检索一个简单的页面时&#xff…