Skip to content

Memory Leak : AggregatingVitalMonitor listeners are never unregistered #2008

Description

@joshskeen

Describe the bug

in RumViewScope.init,

cpuVitalMonitor.register(cpuVitalListener)
memoryVitalMonitor.register(memoryVitalListener)
frameRateVitalMonitor.register(frameRateVitalListener)

is called, but the corresponding AggregatingVitalMonitor.unregister calls never happen.
The session-scoped AggregatingVitalMonitors hold a map of listeners, and the

private val listeners: MutableMap<VitalListener, VitalInfo> = mutableMapOf()
map continues to grow, since listeners are never unregistered when the view is stopped, causing a memory leak.

Reproduction steps

  • break on VitalMonitor.register and VitalMonitor.unregister while starting / stopping views. observe the map of AggregatingVitalMonitor.listeners continues to grow.

Logcat logs

No response

Expected behavior

Vital monitor listeners are unregistered from the listeners map when a view is stopped.

Affected SDK versions

2.8.0

Latest working SDK version

NA

Did you confirm if the latest SDK version fixes the bug?

Yes

Kotlin / Java version

No response

Gradle / AGP version

No response

Other dependencies versions

No response

Device Information

No response

Other relevant information

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions