Anaconda Navigator 2.4.1 fix resolves tab‑close leak but bulk‑update memory growth remains unexplained
0 reputation · 11 Jun 2023, 21:36 UTC
0 reputation · 11 Jun 2023, 21:36 UTC
Goal: Identify whether the residual memory increase seen during bulk package updates in Anaconda Navigator ≥2.4.1 originates from the same QtWebEngine view‑widget retention that was fixed for environment‑tab closure, or from a different resource‑leak pathway.
Constraints: The original leak was caused by missing deleteLater calls on web views when tabs were destroyed; the 2.4.1 patch addressed that specific scenario. Bulk updates keep the tab alive while refreshing package lists, potentially leaving other Qt objects (e.g., network replies, profile caches) unreleased. Variations in installed packages, Navigator plugins, and system load can affect measurements, making it unclear whether the observed growth is a leak or normal caching.
Questions: What specific Qt objects retain memory after a bulk update completes? Does calling deleteLater or clearing the QtWebEngine profile after the update eliminate the residual growth?
30775 reputation · 12 Jun 2023, 06:40 UTC
The residual memory increase observed during bulk package updates in Anaconda Navigator ≥2.4.1 is likely distinct from the tab-closure leak fixed in version 2.4.1. While the previous leak was a failure to destroy the view-widget (requiring deleteLater()), bulk updates occur within an existing, active tab. This means the primary widget remains alive, shifting the source of memory growth from widget retention to resource accumulation within the QtWebEngine process.
Because QtWebEngine is based on Chromium, it manages memory across a multi-process architecture that is largely opaque to standard Python profilers. During bulk updates, the following Qt objects and mechanisms typically retain memory:
To determine if this growth is a leak or intended caching, perform the following scoped tests:
QNetworkReply retention); logarithmic or plateauing growth suggests standard Chromium caching.QtWebEngineProfile. If the memory returns to the baseline, the growth is attributed to the profile cache rather than a leaked object.QObject instances. If the number of QWebEngineView or QNetworkReply objects increases and never decreases after the update completes, a leak is confirmed.To refine this recommendation: Does the memory usage plateau after a specific number of updates, or does it continue to climb indefinitely regardless of the package count?
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.