java - 将相同的监听器添加到控件/属性是否会为监听器位置分配额外的内存?

标签 java properties controls listener

创建监听器时,例如:

InvalidationListener progressListener = new InvalidationListener() {
    public void invalidated(Observable o) {
        updateValues();
    }
};

然后将监听器多次添加到同一实例/属性,例如:

model.getMediaPlayer().currentTimeProperty().addListener(progressListener);

由于 model.getMediaPlayer() 发生变化,并且可以引用与之前引用的相同的内容。在本例中添加相同的监听器 progressListener 是否会导致内存泄漏等任何问题?

最佳答案

如果您创建一次监听器,然后多次添加它,则使用的内存量很小。然而,微小的分配很多很多次加起来就可以了。监听器是潜在的泄漏源,但通常是在每次创建新实例时发生。鉴于您的描述,我怀疑您的泄漏源。

关于java - 将相同的监听器添加到控件/属性是否会为监听器位置分配额外的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50475996/

相关文章:

java - 如何配置gradle在不同的环境中使用不同的log4j.properties文件?

c# - 在类级别声明 [XmlElement(IsNullable = true)]

c# - 使子控件成为 IContainer

wpf - 如何在 WPF 中更改 TextBox 的禁用背景颜色

c# - AddRange 授予公众访问列表的权限

asp.net - 如何在 ZedGraph 中的每个点显示标签?

java - 使用Java中的ZXing库解码彩色图像

java - 使用 Jgrasp 打印字符串列表 (Java)

java - 从地理坐标到地磁坐标的转换

java - 如何对读取属性文件的类进行单元测试