创建监听器时,例如:
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/