我正在发送大量事件,对于每个事件,我都会收到一个未来。我在那个未来设置了一个完成侦听器。如果我有太多的期货在监听事件完成会怎样?我的应用会内存不足吗?在 Java 中添加侦听器时,会消耗内存吗?
Java Future
只是一个 Java 对象,所以是的,Future 会消耗内存。
这里更大的问题是,这是内存泄漏的主要机会。如果不小心,可能会意外地保留对对象的引用的时间比预期的要长得多(甚至在应用程序的生命周期内(。事件处理是具有托管内存的环境中内存泄漏的主要原因之一。
但是,根据提供的信息,很难判断您是否会耗尽内存。需要考虑的几件事:
- 这些事件是否会导致您"保留"内存密集型对象更长时间?如果是这样,还要多久?
- 在这种情况下,"很多"是多少?
- 首先,你的记忆有多有限?