Java Firebase侦听器是否占用大量内存?

Java Firebase侦听器是否占用大量内存?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,像这样的Firebase侦听器会占用巨大的堆内存吗 ref.addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() { @Override public void onDataChange(com.google.firebase.database.DataSnapshot snapshot) { } }); 至少在拍摄快照时?addListenerForSi

像这样的
Firebase
侦听器会占用巨大的堆内存吗

ref.addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() {
    @Override
    public void onDataChange(com.google.firebase.database.DataSnapshot snapshot) {
    }
});

至少在拍摄快照时?

addListenerForSingleValueEvent()
将在调用时拍摄
快照
或仅同步一次数据,前提是该节点的数据发生了更改且internet连接可用


addValueEventListener()
将在节点数据发生更改且internet连接可用时从节点获取快照或同步数据。

Firebase数据库客户端在应用程序内存中保留您正在侦听的所有数据的副本。一旦删除了位置的最后一个侦听器,正如我们已经讨论过的,数据将从内存中删除

当我们谈论Firebase时,一切都是关于侦听器的,作为对您问题的快速回答,不,侦听器不会占用大量内存,如果正确删除侦听器,您可以使用任意数量的侦听器

使用意味着:

为此位置的数据中的单个更改添加侦听器

因此,不需要删除侦听器

例如,如果您使用了
ref.keepSynced(true)
,则
ref
位置的所有数据都将保存在内存中,并保持最新


如果您
启用持久化
,客户端也会将活动和最近的数据持久化到磁盘。

目前您的问题并不具体。可能会将其更改为:“firebase侦听器占用多少堆内存?”并可能会添加放置侦听器的数据示例。单个字符串上的侦听器或复杂对象上的侦听器的内存使用应该不同。ref.keepSynced是否使用堆内存?是的,因为您将在内存中的特定位置保留所有数据。快照是否使用堆内存?
Java heap Space
是放置创建的新对象的位置。因此,在创建类的新对象时,您使用的是heap sapce。是的,它与创建所有新对象的情况相同。