是否向控件/属性添加相同的侦听器会为侦听器点分配额外的内存?

时间:2018-05-22 20:30:30

标签: java properties controls listener

创建像:

这样的监听器时
InvalidationListener progressListener = new InvalidationListener() {
    public void invalidated(Observable o) {
        updateValues();
    }
};

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

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

由于model.getMediaPlayer()更改并且可以引用与之前引用的相同的一个。在这种情况下,添加相同的侦听器progressListener会导致内存泄漏等问题吗?

1 个答案:

答案 0 :(得分:0)

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