# Memory Leaks

Published articles for Memory Leaks.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## GNOME Shotwell 33 Photo Manager Released With GTK4 Port

DevFeed: [GNOME Shotwell 33 Photo Manager Released With GTK4 Port](<https://devfeed.tech/articles/gnome-shotwell-33-photo-manager-released-with-gtk4-port-12404.md>)

Original publisher: [Read original article](<https://www.phoronix.com/news/GNOME-Shotwell-33>)

Author: Michael Larabel

Published: 2026-09-13T10:40:50Z

Content type: news

Language: en

Sources: [Phoronix](<https://devfeed.tech/sources/phoronix.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [bug](<https://devfeed.tech/topics/bug.md>)

Tags: [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [desktop-linux](<https://devfeed.tech/tags/desktop-linux.md>), [linux-benchmarking](<https://devfeed.tech/tags/linux-benchmarking.md>), [linux-hardware-benchmarks](<https://devfeed.tech/tags/linux-hardware-benchmarks.md>), [linux-hardware-reviews](<https://devfeed.tech/tags/linux-hardware-reviews.md>), [linux-how-to](<https://devfeed.tech/tags/linux-how-to.md>), [linux-performance](<https://devfeed.tech/tags/linux-performance.md>), [linux-server-benchmarks](<https://devfeed.tech/tags/linux-server-benchmarks.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [news](<https://devfeed.tech/tags/news.md>), [open-source-graphics](<https://devfeed.tech/tags/open-source-graphics.md>), [phoronix](<https://devfeed.tech/tags/phoronix.md>), [phoronix-test-suite](<https://devfeed.tech/tags/phoronix-test-suite.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [ubuntu-benchmarks](<https://devfeed.tech/tags/ubuntu-benchmarks.md>), [ubuntu-hardware](<https://devfeed.tech/tags/ubuntu-hardware.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Shotwell 33 is a major release of the GNOME photo manager that ports its user interface from GTK3 to GTK4. It also adds URI opening in the viewer, reworked printing, memory-leak and potential-crash fixes, and other minor improvements.

### Source excerpt

It's been quite some time since hearing any news out of the Shotwell photo manager project for GNOME, but out today is Shotwell 33 with the long-awaited GTK4 port...

## One Decade of Rustls: Evolution, Benchmarks, and Future Roadmap

DevFeed: [One Decade of Rustls: Evolution, Benchmarks, and Future Roadmap](<https://devfeed.tech/articles/one-decade-of-rustls-evolution-benchmarks-and-future-roadmap-8458.md>)

Original publisher: [Read original article](<https://www.infoq.com/news/2026/09/rustls-one-decade/>)

Author: Olimpiu Pop

Published: 2026-09-12T07:07:00Z

Content type: news

Language: en

Sources: [InfoQ](<https://devfeed.tech/sources/infoq.md>)

Topics: [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Security, Privacy and Abuse Prevention](<https://devfeed.tech/topics/security-privacy-and-abuse-prevention.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [development](<https://devfeed.tech/tags/development.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [memory-safety](<https://devfeed.tech/tags/memory-safety.md>), [news](<https://devfeed.tech/tags/news.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [performance](<https://devfeed.tech/tags/performance.md>), [post-quantum](<https://devfeed.tech/tags/post-quantum.md>), [release](<https://devfeed.tech/tags/release.md>), [retrospective](<https://devfeed.tech/tags/retrospective.md>), [rust](<https://devfeed.tech/tags/rust.md>), [rustls-one-decade](<https://devfeed.tech/tags/rustls-one-decade.md>), [security](<https://devfeed.tech/tags/security.md>), [tls](<https://devfeed.tech/tags/tls.md>)

### AI overview

Rustls marks its tenth anniversary with a retrospective on its growth, funding, security work, and performance. The article compares Rustls 0.23.37 with OpenSSL and BoringSSL and notes architectural changes planned for version 0.24.

### Source excerpt

Rustls, a Rust TLS library, marks its decade-long progression from a grassroots project to a funded open-source initiative. Key contributions from organisations boosted development, resulting in features like post-quantum cryptography and robust performance. The upcoming 0.24 release aims to enhance architecture and flexibility, including new input buffering and improved session handling By Olimpiu Pop

## Preparing your app for broader memory limits

DevFeed: [Preparing your app for broader memory limits](<https://devfeed.tech/articles/preparing-your-app-for-broader-memory-limits-4232.md>)

Original publisher: [Read original article](<https://android-developers.googleblog.com/2026/08/app-broader-memory-limits.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-19T19:00:00Z

Content type: article

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog.md>), [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-2.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [cpu](<https://devfeed.tech/topics/cpu.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [os](<https://devfeed.tech/tags/os.md>), [performance](<https://devfeed.tech/tags/performance.md>), [process](<https://devfeed.tech/tags/process.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

Android 17 broadens per-app memory limits across devices. The article explains how exceeding a memory budget can cause zRAM swapping, slowdowns, and process termination, and recommends measuring and reducing an app's memory footprint.

### Source excerpt

Posted by Blair Harmon, Director of Product Management, Android Platform A great user experience is central to Android's mission, and delivering on that promise requires keeping devices fast, responsive, and reliable. This is why memory optimization is more critical than ever. Across the ecosystem, new devices are maintaining or even decreasing their physical memory capacity in response to memory price increases, yet users continue to expect the same seamless, high-performance app experience. In Android 17, we introduced per-app memory limits, starting with Pixel devices, to help protect the overall user experience from applications using excess memory and causing system-wide slowdowns. Over the coming year, an increasing number of manufacturers will leverage the Android per-app memory limits across their portfolio of device RAM configurations from 4GB to 16GB+ devices. If your app exceeds these limits, it will be slowed down and may be terminated. Optimizing your app's memory footprint is essential to preventing OS throttling and maintaining a seamless user experience. In this post, we'll explore how these limits work under the hood, how to measure your memory footprint using new Android vitals metrics, and actionable steps to optimize your app or game. Understanding Memory Limits When your app exceeds its memory budget, Android takes progressive action to protect device responsiveness: zRAM Swapping: If your app reaches its allocated limit, the system forces your app's pages into zRAM (compressed RAM). While zRAM prevents immediate eviction, compressing and decompressing pages adds CPU overhead, which can result in noticeable UI jank and experience slowdowns. Process Termination: If your app continues to increase its memory usage beyond the zRAM threshold, it will be terminated by the system. To determine if your app session was impacted by these constraints in the field, you can call getDescription() within ApplicationExitInfo. If the system applied a limit, the

## Preparing your app for broader memory limits

DevFeed: [Preparing your app for broader memory limits](<https://devfeed.tech/articles/preparing-your-app-for-broader-memory-limits-22689.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/08/app-broader-memory-limits.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-19T19:00:00Z

Content type: tutorial

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [memory price increases](<https://devfeed.tech/topics/memory-price-increases.md>)

Tags: [adb](<https://devfeed.tech/tags/adb.md>), [android](<https://devfeed.tech/tags/android.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [memory-optimization](<https://devfeed.tech/tags/memory-optimization.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [vitals](<https://devfeed.tech/tags/vitals.md>)

### AI overview

This Android Developers article explains how Android 17 per-app memory limits are expanding beyond Pixel devices across a range of RAM configurations. It describes the effects of exceeding memory budgets, including zRAM swapping, CPU overhead, UI jank, throttling, and possible process termination, and outlines ways to measure and optimize app memory usage.

### Source excerpt

Posted by Blair Harmon, Director of Product Management, Android Platform A great user experience is central to Android's mission, and delivering on that promise requires keeping devices fast, responsive, and reliable. This is why memory optimization is more critical than ever. Across the ecosystem, new devices are maintaining or even decreasing their physical memory capacity in response to memory price increases, yet users continue to expect the same seamless, high-performance app experience. In Android 17, we introduced per-app memory limits, starting with Pixel devices, to help protect the overall user experience from applications using excess memory and causing system-wide slowdowns. Over the coming year, an increasing number of manufacturers will leverage the Android per-app memory limits across their portfolio of device RAM configurations from 4GB to 16GB+ devices. If your app exceeds these limits, it will be slowed down and may be terminated. Optimizing your app's memory footprint is essential to preventing OS throttling and maintaining a seamless user experience. In this post, we'll explore how these limits work under the hood, how to measure your memory footprint using new Android vitals metrics, and actionable steps to optimize your app or game. Understanding Memory Limits When your app exceeds its memory budget, Android takes progressive action to protect device responsiveness: zRAM Swapping: If your app reaches its allocated limit, the system forces your app's pages into zRAM (compressed RAM). While zRAM prevents immediate eviction, compressing and decompressing pages adds CPU overhead, which can result in noticeable UI jank and experience slowdowns. Process Termination: If your app continues to increase its memory usage beyond the zRAM threshold, it will be terminated by the system. To determine if your app session was impacted by these constraints in the field, you can call getDescription() within ApplicationExitInfo. If the system applied a limit, the

## jetc.dev Newsletter Issue #325

DevFeed: [jetc.dev Newsletter Issue #325](<https://devfeed.tech/articles/jetc-dev-newsletter-issue-325-22957.md>)

Original publisher: [Read original article](<https://jetc.dev/issues/325.html>)

Author: CommonsWare

Published: 2026-08-04T14:00:00Z

Content type: article

Language: en

Sources: [jetc.dev | Issues](<https://devfeed.tech/sources/jetc-dev-issues.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [releases](<https://devfeed.tech/topics/releases.md>), [debug](<https://devfeed.tech/topics/debug.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [agents](<https://devfeed.tech/tags/agents.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [dev](<https://devfeed.tech/tags/dev.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [published](<https://devfeed.tech/tags/published.md>), [remote](<https://devfeed.tech/tags/remote.md>)

### AI overview

jetc.dev Newsletter Issue #325 reviews recent Jetpack Compose releases and related artifacts, including BOM, Material3, Remote Compose, and Wear Compose updates. It also covers the five-year anniversary of Compose 1.0, composition debugging research, Compose Multiplatform content, and a reported memory leak in a Compose for Desktop design system.

### Source excerpt

Compose 1.0 five-year anniversary! 1.12.0 RC! Memory leaks! Remote Compose for debugging! And... have you been through the desert with a state with no name?!?

## Bun's migration from Zig to Rust reduced the estimated timeline from 1-2 years to 11 days

DevFeed: [Bun's migration from Zig to Rust reduced the estimated timeline from 1-2 years to 11 days](<https://devfeed.tech/articles/the-pulse-what-can-we-learn-from-bun-s-rapid-rust-rewrite-with-ai-40930.md>)

Original publisher: [Read original article](<https://blog.pragmaticengineer.com/the-pulse-what-can-we-learn-from-buns-rapid-rust-rewrite-with-ai/>)

Author: Ivan Klaric

Published: 2026-07-16T16:50:20Z

Content type: opinion

Language: en

Sources: [The Pragmatic Engineer](<https://devfeed.tech/sources/the-pragmatic-engineer-2.md>)

Topics: [Bun](<https://devfeed.tech/topics/bun.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Zig](<https://devfeed.tech/topics/zig.md>), [Fable](<https://devfeed.tech/topics/fable.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>)

Tags: [bun](<https://devfeed.tech/tags/bun.md>), [fable](<https://devfeed.tech/tags/fable.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [migration](<https://devfeed.tech/tags/migration.md>), [rust](<https://devfeed.tech/tags/rust.md>), [zig](<https://devfeed.tech/tags/zig.md>)

### AI overview

The article examines Bun's rewrite from Zig to Rust, focusing on memory-safety problems and the migration approach. It reports that the migration timeline was shortened from an estimated 1-2 years to 11 days, while emphasizing that thorough testing was required.

### Source excerpt

To a sceptic, spending $165K to migrate Bun from Zig to Rust sounds very expensive. But to a realist, shortening a 1-2 year migration down to 11 days opens amazing new opportunities for devs. However, a thoroughly-tested project is required to pull it off.

## Android Studio Quail 2 is Stable: Multi-task with the Android Studio AI agent

DevFeed: [Android Studio Quail 2 is Stable: Multi-task with the Android Studio AI agent](<https://devfeed.tech/articles/android-studio-quail-2-is-stable-multi-task-with-the-android-studio-ai-agent-4220.md>)

Original publisher: [Read original article](<https://android-developers.googleblog.com/2026/06/android-studio-quail-2-stable-features.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-07-14T11:00:00Z

Content type: release

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog.md>), [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-2.md>)

Topics: [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [debugging](<https://devfeed.tech/topics/debugging.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>)

### AI overview

Android Studio Quail 2 is a stable release that adds parallel AI-agent chats, integrated LeakCanary memory-leak profiling, and Agent Mode support for crash investigation through App Quality Insights.

### Source excerpt

Posted by Amman Asfaw, Product Manager, Android Studio Android Studio Quail 2 is now stable and ready for you to use in production, bringing a shift to your IDE with concurrent agentic workflows, natively integrated memory leak profiling, and context-aware crash remediation. Whether you are performing a sweeping architectural overhaul, tracing a memory leak, or resolving a critical production crash, Android Studio keeps you anchored in your workspace by reducing manual friction. Here's a deep dive into what's new: Multi-tasking with parallel chats In Android Studio Quail 2, we've been hard at work redesigning Agent Mode from the ground up. This new architecture provides better performance, offers more flexibility for decomposing complex tasks, and improves the suite of internal tools the agent uses to do its work. In addition to these behind-the-scenes improvements, these changes also allow you to converse across multiple agent chats simultaneously. Waiting for the Android Studio agent to finish a task before you can ask another question or initiate a separate task in Agent Mode is a bottleneck of the past. You can multi-task seamlessly: kick off a UI refactor in one tab, fix a ProGuard rule in a second, and generate documentation in a third. You can also change which models the agent uses from chat to chat based on the requests you have. Take a look at Android Bench for an analysis of how LLMs perform Android development tasks. How to use: Click the "+" icon to start a new parallel conversation, and use the History icon to navigate between active tasks. Alternatively, select File > New > New Agent Tab to open a conversation in a dedicated tab. Note: Worktree support is currently unavailable. Exercise caution when running concurrent chats that modify the same project files, which can potentially lead to editor conflicts. Run multiple agent tasks in parallel with different models of your choice. Use the History icon to navigate between active tasks. Memory leak detec

## v20.2.2 Tentacle released

DevFeed: [v20.2.2 Tentacle released](<https://devfeed.tech/articles/v20-2-2-tentacle-released-12343.md>)

Original publisher: [Read original article](<https://ceph.io/en/news/blog/2026/v20-2-2-tentacle-released/>)

Author: Yuri Weinstein, Patrick Donnelly

Published: 2026-06-16T00:00:00Z

Content type: release

Language: en

Sources: [Ceph Blog](<https://devfeed.tech/sources/ceph-blog.md>)

Topics: [bug](<https://devfeed.tech/topics/bug.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [IO](<https://devfeed.tech/topics/io.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [aio](<https://devfeed.tech/tags/aio.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [bug](<https://devfeed.tech/tags/bug.md>), [ceph](<https://devfeed.tech/tags/ceph.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [en-article](<https://devfeed.tech/tags/en-article.md>), [en-blog-post](<https://devfeed.tech/tags/en-blog-post.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [io](<https://devfeed.tech/tags/io.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [rados](<https://devfeed.tech/tags/rados.md>), [release](<https://devfeed.tech/tags/release.md>), [rgw](<https://devfeed.tech/tags/rgw.md>), [storage](<https://devfeed.tech/tags/storage.md>), [tentacle](<https://devfeed.tech/tags/tentacle.md>), [ui](<https://devfeed.tech/tags/ui.md>), [update](<https://devfeed.tech/tags/update.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

Ceph v20.2.2 Tentacle is a minor release that adds Rocky 10 package-install support and recommends updating. It fixes issues across MDS, OSD, RGW, RADOS libraries, watch/notify operations, asynchronous utilities, and the dashboard, including security vulnerabilities, memory leaks, encrypted-object lifecycle problems, and UI and configuration improvements.

### Source excerpt

This is the second minor release in the Tentacle series. We recommend that all users update to this release. Release Date ¶ June 16, 2026 Notable Changes ¶ Rocky 10 package-based installs are now supported starting with v20.2.2. Please see the supported platforms for current and planned support in Ceph. MDS (Metadata Server) ¶ Segmentation fault fixed due to incorrect queueing of request retries. OSD (Object Storage Daemon) ¶ PGLog Missed List: Fixed a bug to ensure the correct version is attached to the missing list when ignoring log entries. Data Integrity Asserts: Added assertions to explicitly catch potential corruption in the OSD missing list. RGW (RADOS Gateway) ¶ Lifecycle Management: Fixed lifecycle transition issues affecting encrypted multipart objects. REST & Query Handling: RESTArgs::get_string() now properly URL-decodes incoming query parameters. RADOS / librados / neorados ¶ Linger Operations: Rewrote safety checks to eliminate use-after-free vulnerabilities and LingerOp memory leaks when an unwatch operation returns ENOTCONN. Replaced the flawed is_valid_watch() check with a safe linger_by_cookie() lookup which safely manages LingerOp references using intrusive_ptr. Ensured librados linger callbacks hold a persistent reference to LingerOp to protect against races with simultaneous linger_cancel() requests. Configured librados::IoCtxImpl::aio_unwatch() to asynchronously deliver ENOTCONN to AioCompletion instead of returning the error directly. Watch/Notify: Fixed neorados notification queue bounds enforcement so that an overflow marker is only appended on the first message exceeding capacity, rather than duplicating it on every subsequent message. Prevented double-cleanup triggers in watch/notify operations when incoming errors arrive after maybe_cleanup() runs. Fixed a bug where notify would lose original error values by ensuring it no longer attempts to decode empty responses. Enhanced io_context shutdown procedures to clear handlers and route cleanl

## Hunting iOS Memory Leaks: S1E1

DevFeed: [Hunting iOS Memory Leaks: S1E1](<https://devfeed.tech/articles/hunting-ios-memory-leaks-s1e1-28534.md>)

Original publisher: [Read original article](<https://www.amanjeet.me/hunting-ios-memory-leaks-s1e1/>)

Author: Amanjeet Singh Gurtatta

Published: 2026-05-09T09:43:49Z

Content type: article

Language: en

Sources: [Amanjeet Singh](<https://devfeed.tech/sources/amanjeet-singh.md>)

Topics: [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [ios](<https://devfeed.tech/tags/ios.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [traces](<https://devfeed.tech/tags/traces.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>)

### AI overview

The first edition of Hunting Memory Leaks describes development of XCTestLeaks, a tool that runs unit test schemes, checks for retain cycles with leaks(1), and produces HTML leak reports. The author reports fixing two memory leaks in Firefox-iOS-related code and outlines a workflow using project-specific GitHub Actions, Claude Code, and optional upstream issues or pull requests.

### Source excerpt

Welcome to the first edition of Hunting Memory Leaks. Another wild week, mostly battling with XCTestLeaks, the tool I've been building on the side. I'll release it once I'm confident the workflow holds up across at least 5 repos. For context, I've

## 20 Mistakes That Quietly Destroy JavaScript/TypeScript Codebases (Part 2)

DevFeed: [20 Mistakes That Quietly Destroy JavaScript/TypeScript Codebases (Part 2)](<https://devfeed.tech/articles/20-mistakes-that-quietly-destroy-javascript-typescript-codebases-part-2-18103.md>)

Original publisher: [Read original article](<https://thetshaped.dev/p/20-mistakes-that-quietly-destroy-javascript-typescript-codebases-common-code-smell-patterns-async-performance-testing>)

Author: The T-Shaped Dev

Published: 2026-05-09T02:19:51Z

Content type: tutorial

Language: en

Sources: [The T-Shaped Dev](<https://devfeed.tech/sources/the-t-shaped-dev.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Code](<https://devfeed.tech/topics/code.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [code](<https://devfeed.tech/tags/code.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [mistakes](<https://devfeed.tech/tags/mistakes.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [test](<https://devfeed.tech/tags/test.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

Part 2 of a JavaScript and TypeScript code-quality series presents common runtime and code-quality mistakes, including mutating function parameters, memory leaks from uncleared listeners, timers and subscriptions, and async cancellation issues. It includes fixes and testing or debugging guidance.

### Source excerpt

Common JS/TS patterns that feel fine until they don't. 11 mistakes, before/after code for each. (11 min)

## Structured Concurrency

DevFeed: [Structured Concurrency](<https://devfeed.tech/articles/structured-concurrency-39377.md>)

Original publisher: [Read original article](<https://kt.academy/article/structured_concurrency_patricio>)

Published: 2026-04-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Structured concurrency](<https://devfeed.tech/topics/structured-concurrency.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [kotlin-coroutines](<https://devfeed.tech/topics/kotlin-coroutines.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Error Handling](<https://devfeed.tech/topics/error-handling.md>)

Tags: [coroutines](<https://devfeed.tech/tags/coroutines.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [guide](<https://devfeed.tech/tags/guide.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [processes](<https://devfeed.tech/tags/processes.md>), [structured-concurrency](<https://devfeed.tech/tags/structured-concurrency.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

A Kotlin-focused guide to structured concurrency explains how coroutine hierarchies establish ownership and completion guarantees. It covers cancellation of child coroutines, avoiding unnecessary work and resource leaks, awaiting completion, and handling errors.

### Source excerpt

The only guide to structured concurrency you'll ever need.

## Discovering iOS Memory Leaks IV: Detecting via Unit Tests

DevFeed: [Discovering iOS Memory Leaks IV: Detecting via Unit Tests](<https://devfeed.tech/articles/discovering-ios-memory-leaks-iv-detecting-via-unit-tests-28531.md>)

Original publisher: [Read original article](<https://www.amanjeet.me/discovering-ios-memory-leaks-iv-detecting-via-unit-tests/>)

Author: Amanjeet Singh Gurtatta

Published: 2026-01-07T01:46:06Z

Content type: tutorial

Language: en

Sources: [Amanjeet Singh](<https://devfeed.tech/sources/amanjeet-singh.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [unit tests](<https://devfeed.tech/topics/unit-tests.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [macOS](<https://devfeed.tech/topics/macos.md>)

Tags: [ios](<https://devfeed.tech/tags/ios.md>), [macos](<https://devfeed.tech/tags/macos.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [tests](<https://devfeed.tech/tags/tests.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This article explores detecting real iOS memory leaks with unit tests instead of UI tests. It describes running the macOS leaks tool against the Firefox process during unit-test teardown in the iOS simulator to shorten the feedback cycle and broaden coverage.

### Source excerpt

Using unit tests and macOS leaks tool to catch real iOS memory leaks.

## Subverting control with weak references

DevFeed: [Subverting control with weak references](<https://devfeed.tech/articles/subverting-control-with-weak-references-28094.md>)

Original publisher: [Read original article](<https://jlongster.com/subverting-control-weak-refs>)

Author: James Long

Published: 2025-02-24T12:00:00Z

Content type: tutorial

Language: en

Sources: [James Long](<https://devfeed.tech/sources/james-long.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [reference](<https://devfeed.tech/tags/reference.md>)

### AI overview

This JavaScript article explains weak references, WeakRef, and WeakMap. It describes how weak references interact with garbage collection and how WeakMap can avoid retaining objects and causing memory leaks.

### Source excerpt

Weak references are neat. The best language features unlock different kinds of abstractions, and weak references do exactly that. Let me show you why. In JavaScript we have two APIs to work with weak references: WeakMap and WeakRef. (Before I wrote this article I thought WeakRef was only a proposal, but it turns out most browsers have already implemented it) One of the more common use cases uses WeakMap. This data structure keeps a weak reference to the keys in the map, and a strong reference between the keys and values. I guess I should explain what a "weak reference" is: usually if you have a reference to an object in a variable, it stops the garbage collector from deleting it (which makes sense). It'd be weird if suddenly your variable pointed to nothing right? A "weak reference" doesn't stop the object from being garbage collected. Usually languages' semantics don't allow a variable to change in the middle of execution however: // this doesn't exist, but what if we could create a weak reference like this? let weak trans = new Transaction(); // do a bunch of things... // error! trans is... nothing? it got garbage collected trans.transfer(); ^3d7637 Wouldn't it be weird if trans changed in the middle of execution? If that was possible all bets would be off for everything in the entire program because these weak references could be passed anywhere. Instead, APIs for weak references force you to call a function to get the value. The WeakRef class has a deref method to get the object. const ref = new WeakRef(obj) // get the object ref.deref() // do a bunch of things... ref.deref() ^ae238d In the above example, if nothing has a reference to obj, it'll eventually get garbage collected. That means deref might return obj the first time, but the second time it might return undefined. Let's get back to WeakMap which is the more common usage of weak references. (Direct weak references have a lot of weird behaviors and they should be considered very low-level.) A WeakMap has

## Simplify ViewBinding in Android with ViewBindingPropertyDelegate 2.0

DevFeed: [Simplify ViewBinding in Android with ViewBindingPropertyDelegate 2.0](<https://devfeed.tech/articles/simplify-viewbinding-in-android-with-viewbindingpropertydelegate-2-0-25960.md>)

Original publisher: [Read original article](<https://kirillr.medium.com/whats-new-in-vbpd-2-0-a83565134cff?source=rss-7a0a233f88a2------2>)

Author: Kirill Rozov

Published: 2025-02-04T13:30:45Z

Content type: release

Language: en

Sources: [Stories by Kirill Rozov on Medium](<https://devfeed.tech/sources/stories-by-kirill-rozov-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Library](<https://devfeed.tech/topics/library.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [recyclerview](<https://devfeed.tech/topics/recyclerview.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-jetpack](<https://devfeed.tech/tags/android-jetpack.md>), [fragments](<https://devfeed.tech/tags/fragments.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [library](<https://devfeed.tech/tags/library.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [performance](<https://devfeed.tech/tags/performance.md>), [recyclerview](<https://devfeed.tech/tags/recyclerview.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [release](<https://devfeed.tech/tags/release.md>), [ui](<https://devfeed.tech/tags/ui.md>), [view-binding](<https://devfeed.tech/tags/view-binding.md>)

### AI overview

This article announces ViewBindingPropertyDelegate 2.0, a release that refactors how the Android library manages ViewBinding lifecycles. It replaces Jetpack Lifecycle-based detection with component lifecycle callbacks for Fragments and Activities, improving the timing of reference clearing and addressing issues related to Fragment animations. The release also supports lazy ViewBinding creation and aims to prevent memory leaks.

### Source excerpt

I'm excited to announce the release of ViewBindingPropertyDelegate 2.0, which introduces significant under-the-hood refactoring to enhance the library's stability and performance. In this article, I'll highlight the most important changes and explain how they improve the library's functionality. Brief Introduction ViewBindingPropertyDelegate(VBPD) is a lightweight library designed to simplify the use of Android's ViewBinding by: Managing the ViewBinding lifecycle and clearing references to prevent memory leaks. Eliminating the need to maintain nullable references to Views or ViewBindings. Creating ViewBindings lazily. The library supports usage in various components, including Activities, Fragments, ViewGroups, and RecyclerView.ViewHolders. class ProfileFragment : Fragment(R.layout.profile) { private val profileBinding: ProfileBinding by viewBinding(ProfileBinding::bind) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) // ProfileBinding instance will be created lazily on first access profileBinding.name.text = ... } override fun onDestroyView() { super.onDestroyView() // profileBinding reference will be cleared after onDestroyView() } }Changes in 2.0Transition from Lifecycle to Component Callbacks In previous versions (1.x), VBPD relied on Jetpack's Lifecycle to detect when a View was being destroyed. This approach had a limitation: the Lifecycle callback methods could be invoked before Fragment.onDestroyView(), while the ViewBinding reference was still needed. To address this, VBPD postponed clearing the ViewBinding reference using an Android Handler after onDestroyView(), when the Fragment's View LifecycleOwner transitioned to the DESTROYED state. In version 2.0, VBPD now utilizes FragmentManager.FragmentLifecycleCallbacks to detect when a Fragment's view is destroyed. The key difference lies in the timing of these callbacks, allowing for more precise management of the ViewBinding lifecycle. // Sou

## Identifying insecure C Code with Valgrind and fixing with Snyk Code

DevFeed: [Identifying insecure C Code with Valgrind and fixing with Snyk Code](<https://devfeed.tech/articles/identifying-insecure-c-code-with-valgrind-and-fixing-with-snyk-code-7966.md>)

Original publisher: [Read original article](<https://snyk.io/blog/identifying-insecure-c-code-valgrind/>)

Author: Liran Tal

Published: 2024-09-24T05:00:00Z

Content type: tutorial

Language: en

Sources: [Blog RSS Feed | Snyk](<https://devfeed.tech/sources/blog-rss-feed-snyk.md>)

Topics: [C](<https://devfeed.tech/topics/c.md>), [Static code analysis](<https://devfeed.tech/topics/static-code-analysis.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Security](<https://devfeed.tech/topics/security.md>), [snyk-code](<https://devfeed.tech/topics/snyk-code.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [awareness](<https://devfeed.tech/tags/awareness.md>), [blog](<https://devfeed.tech/tags/blog.md>), [c](<https://devfeed.tech/tags/c.md>), [c-cpp](<https://devfeed.tech/tags/c-cpp.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code-security](<https://devfeed.tech/tags/code-security.md>), [developer](<https://devfeed.tech/tags/developer.md>), [devops](<https://devfeed.tech/tags/devops.md>), [devrel](<https://devfeed.tech/tags/devrel.md>), [docker](<https://devfeed.tech/tags/docker.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [memory-management](<https://devfeed.tech/tags/memory-management.md>), [programming](<https://devfeed.tech/tags/programming.md>), [security](<https://devfeed.tech/tags/security.md>), [snyk-code](<https://devfeed.tech/tags/snyk-code.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

This tutorial explains how insecure C and C++ code can introduce memory leaks and other vulnerabilities, and describes using Valgrind and Snyk Code's static code analysis to identify and fix them. It also discusses dynamic memory allocation, memory exhaustion, and relevant MISRA guidance.

### Source excerpt

Discover how to secure your C and C++ code with Snyk. Learn about common vulnerabilities like memory leaks and buffer overflows in C and C++ and how Snyk's static code analysis tool can help you identify and fix them. Protect your critical software from security threats.

## Discovering iOS memory leaks: A case study with Firefox app II

DevFeed: [Discovering iOS memory leaks: A case study with Firefox app II](<https://devfeed.tech/articles/discovering-ios-memory-leaks-a-case-study-with-firefox-app-ii-28529.md>)

Original publisher: [Read original article](<https://www.amanjeet.me/discovering-ios-memory-leaks-case-study-part-two/>)

Author: Amanjeet Singh Gurtatta

Published: 2024-02-24T11:22:22Z

Content type: article

Language: en

Sources: [Amanjeet Singh](<https://devfeed.tech/sources/amanjeet-singh.md>)

Topics: [Firefox](<https://devfeed.tech/topics/firefox.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [firefox](<https://devfeed.tech/tags/firefox.md>), [github](<https://devfeed.tech/tags/github.md>), [ios](<https://devfeed.tech/tags/ios.md>), [leak](<https://devfeed.tech/tags/leak.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [mobile-performance](<https://devfeed.tech/tags/mobile-performance.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

A case study of contributing a memory-leak fix to Firefox for iOS. The article describes the pull-request process, an initially unmerged approach, the eventual fix involving a UI kit retain cycle, and lessons about coordinating with open-source maintainers.

### Source excerpt

Discover my experience in contributing to Firefox ios fixing their memory leaks

## Discovering iOS memory leaks: A case study with Firefox app

DevFeed: [Discovering iOS memory leaks: A case study with Firefox app](<https://devfeed.tech/articles/discovering-ios-memory-leaks-a-case-study-with-firefox-app-28530.md>)

Original publisher: [Read original article](<https://www.amanjeet.me/discovering-ios-memory-leaks-case-study/>)

Author: Amanjeet Singh Gurtatta

Published: 2023-12-25T21:07:16Z

Content type: tutorial

Language: en

Sources: [Amanjeet Singh](<https://devfeed.tech/sources/amanjeet-singh.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>), [App](<https://devfeed.tech/topics/app.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>)

Tags: [command-line](<https://devfeed.tech/tags/command-line.md>), [crashlytics](<https://devfeed.tech/tags/crashlytics.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [ios](<https://devfeed.tech/tags/ios.md>), [leak](<https://devfeed.tech/tags/leak.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [tool](<https://devfeed.tech/tags/tool.md>)

### AI overview

A case study on detecting and prioritizing memory leaks in iOS apps. It explains automatic reference counting, recommends prioritizing production leaks and monitoring core flows, and uses a Firefox iOS app with UI tests and the macOS leaks command-line tool.

### Source excerpt

Discover how to efficiently detect and manage memory leaks in iOS apps using the leaks command line tool with example

## Apollo Client 3.9 Feature Spotlight - The memory story

DevFeed: [Apollo Client 3.9 Feature Spotlight - The memory story](<https://devfeed.tech/articles/apollo-client-3-9-feature-spotlight-the-memory-story-23154.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/apollo-3-9-beta-feature-spotlight-the-memory-story>)

Author: Lenz Weber-Tronic

Published: 2023-12-20T16:02:32Z

Content type: article

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [apollo-client](<https://devfeed.tech/topics/apollo-client.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Maintainers](<https://devfeed.tech/topics/maintainers.md>)

Tags: [apollo-client](<https://devfeed.tech/tags/apollo-client.md>), [cache](<https://devfeed.tech/tags/cache.md>), [feature](<https://devfeed.tech/tags/feature.md>), [issue](<https://devfeed.tech/tags/issue.md>), [leak](<https://devfeed.tech/tags/leak.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [spotlight](<https://devfeed.tech/tags/spotlight.md>)

### AI overview

Apollo Client 3.9 is released in beta with fixes for various memory leaks, more granular control over internal cache sizes, and deprecation of canonizeResults because of a conceptual, non-fixable memory leak. The article also asks users to help determine appropriate default cache sizes.

### Source excerpt

Apollo Client 3.9 is out in beta now, and it fixes various memory leaks, adds granular control over internal cache sizes, and deprecates the canonizeResults option due to a conceptual and non-fixable memory leak associated with it. We want your help to find the correct default cache sizes - see the last paragraph for details on that. The memory story Sometimes, in an open source project, you have that issue that sticks around for a long time because it's not clear how you would tackle it.

## Node.js 20.8.0 (Current)

DevFeed: [Node.js 20.8.0 (Current)](<https://devfeed.tech/articles/node-js-20-8-0-current-2740.md>)

Original publisher: [Read original article](<https://nodejs.org/en/blog/release/v20.8.0>)

Published: 2023-09-29T03:26:00Z

Content type: release

Language: en

Sources: [Node.js Blog](<https://devfeed.tech/sources/node-js-blog.md>)

Topics: [Node.js](<https://devfeed.tech/topics/node-js.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Streams](<https://devfeed.tech/topics/streams.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [debug](<https://devfeed.tech/topics/debug.md>)

Tags: [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [debugger](<https://devfeed.tech/tags/debugger.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [performance](<https://devfeed.tech/tags/performance.md>), [release](<https://devfeed.tech/tags/release.md>), [streams](<https://devfeed.tech/tags/streams.md>)

### AI overview

Node.js 20.8.0 is a Current release focused on performance and stability. It improves writable, readable, and web stream performance, reduces stream memory overhead, addresses memory leaks and use-after-free issues, and includes updates to the test runner, snapshots, debugging, and V8 integration.

### Source excerpt

Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

## How Android Memory Leaks Cause Jank, Freezes, and ANRs

DevFeed: [How Android Memory Leaks Cause Jank, Freezes, and ANRs](<https://devfeed.tech/articles/freezes-anrs-check-memory-leaks-25624.md>)

Original publisher: [Read original article](<https://blog.p-y.wtf/freezes-anrs-check-memory-leaks>)

Author: Pierre-Yves Ricau

Published: 2023-07-20T22:09:53Z

Content type: tutorial

Language: en

Sources: [Py's blog](<https://devfeed.tech/sources/py-s-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [navigation](<https://devfeed.tech/topics/navigation.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [jank](<https://devfeed.tech/tags/jank.md>), [latency](<https://devfeed.tech/tags/latency.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [outofmemory](<https://devfeed.tech/tags/outofmemory.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article explains how Android memory leaks can cause jank, freezes, and ANRs rather than immediate crashes. It describes tracking memory usage per navigation, correlating memory growth with navigation latency, and how garbage collection blocking the main thread affects UI responsiveness near the app memory limit.

### Source excerpt

In this article, I show how Android memory leaks lead to jank, freezes and ANRs more often than they lead to OutOfMemoryError crashes. Navigation Latency At Square, we've been tracking a User-Centric performance metric: Interaction Latency. We track ...

## Detect small memory leaks

DevFeed: [Detect small memory leaks](<https://devfeed.tech/articles/detect-small-memory-leaks-26140.md>)

Original publisher: [Read original article](<https://vadzimv.dev/2022/10/10/detect-small-memory-leaks.html>)

Author: Vadzimv Dev Blog

Published: 2022-10-10T08:20:00Z

Content type: tutorial

Language: en

Sources: [vadzimv Dev Blog](<https://devfeed.tech/sources/vadzimv-dev-blog.md>)

Topics: [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [SDK](<https://devfeed.tech/topics/sdk.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [android](<https://devfeed.tech/tags/android.md>), [applications](<https://devfeed.tech/tags/applications.md>), [batch](<https://devfeed.tech/tags/batch.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [trace](<https://devfeed.tech/tags/trace.md>)

### AI overview

This tutorial explains how to detect small, long-term memory leaks in Android applications by recording memory traces, reviewing process RSS in Perfetto, and using queries and batch processing to analyze multiple traces.

### Source excerpt

Detect small memory leaks in Android applications.

## ViewLifecycleLazy and other ways to avoid View memory leaks in Android Fragments

DevFeed: [ViewLifecycleLazy and other ways to avoid View memory leaks in Android Fragments](<https://devfeed.tech/articles/viewlifecyclelazy-and-other-ways-to-avoid-view-memory-leaks-in-android-fragments-25885.md>)

Original publisher: [Read original article](<https://bladecoder.medium.com/viewlifecyclelazy-and-other-ways-to-avoid-view-memory-leaks-in-android-fragments-4aa982e6e579?source=rss-54910f05af37------2>)

Author: Christophe Beyls

Published: 2022-09-28T06:12:25Z

Content type: tutorial

Language: en

Sources: [Stories by Christophe Beyls on Medium](<https://devfeed.tech/sources/stories-by-christophe-beyls-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [architecture-components](<https://devfeed.tech/tags/architecture-components.md>), [fragments](<https://devfeed.tech/tags/fragments.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [view-binding](<https://devfeed.tech/tags/view-binding.md>)

### AI overview

This article presents ViewLifecycleLazy, a Kotlin delegated property for Android Fragments that lazily initializes values tied to the current Fragment view lifecycle and clears them when the view hierarchy reaches the DESTROYED state. It explains how this approach helps prevent view-related memory leaks and compares it with AutoClearedValue and manual clearing in onDestroyView().

### Source excerpt

Yet another take on AutoClearedValueAre your Fragments leaking? Handling the lifecycle of Android Fragments is difficult. I already covered this topic in an article I wrote in 2017, before Google added a View-specific Lifecycle to Fragments in an attempt to solve some issues. Until now, the number one cause of memory leaks when using Fragments remains the same: not properly clearing all direct and indirect View references in onDestroyView(). Tools like Leak Canary can help detecting some of these cases. And of course, Jetpack Compose represents a big paradigm change which completely removes the need to keep View references but hey, we still have our legacy codebases to maintain! I recently came across a Medium blog post from Gabor Varadi describing an issue he encountered with a custom Kotlin delegated property he created to simplify managing view bindings in Fragments. His solution is based on a class named AutoClearedValue from the architecture components samples. The purpose of AutoClearedValue is to provide a delegate that will automatically clear a value tied to one or more Views when the Fragment View hierarchy gets destroyed, in order to avoid the aforementioned memory leaks. This is an elegant alternative to declaring a Fragment property as nullable and manually setting it to null in onDestroyView(), which can be easily forgotten. It turns out I had already come up with my own solution to do the exact same thing. And since my version is simpler and generates more optimized bytecode compared to AutoClearedValue and what Mr Varadi published, I decided to share it with you. I named this delegate ViewLifecycleLazy. Like the name implies, the delegated property value is computed lazily and the Fragment's current view lifecycle is observed in order to automatically clear the value when it moves to the DESTROYED state. https://medium.com/media/17c61e41a0f2d3e17c63e3bcf8f6376c/href This is how it's used in Fragments, for example with View Binding: class MyFragment :

## 🙅♂ Don't let ViewModel know about framework level dependencies

DevFeed: [🙅♂ Don't let ViewModel know about framework level dependencies](<https://devfeed.tech/articles/don-t-let-viewmodel-know-about-framework-level-dependencies-25714.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/dont-let-viewmodel-knew-about-framework-level-dependencies/>)

Author: Shreyas Patil

Published: 2021-09-17T12:18:27Z

Content type: tutorial

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [android-app-development](<https://devfeed.tech/topics/android-app-development.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [framework](<https://devfeed.tech/tags/framework.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

This Android development article explains why ViewModels should avoid holding Android framework references such as Activity, Context, View, or Drawable. It connects framework-aware ViewModels with memory leaks and reduced testability, modularity, and maintainability.

### Source excerpt

Explore best practices for Android ViewModels. Learn why keeping framework references out of ViewModels is crucial for testing and preventing memory leaks.

## Effective Kotlin Item 53: Eliminate obsolete object references

DevFeed: [Effective Kotlin Item 53: Eliminate obsolete object references](<https://devfeed.tech/articles/effective-kotlin-item-53-eliminate-obsolete-object-references-39287.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-object-references>)

Published: 2021-09-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [classes](<https://devfeed.tech/topics/classes.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [gc](<https://devfeed.tech/tags/gc.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article explains how obsolete object references can cause memory leaks in Java and Android applications. It discusses retaining large or no-longer-needed objects, including activities stored in companion objects or top-level properties, and shows how stale references in a stack implementation keep removed elements reachable by the Garbage Collector.

### Source excerpt

How to help our garbage collector and avoid memory leaks.

[Next page](<https://devfeed.tech/tags/memory-leaks.md?cursor=WyIyMDIxLTA5LTEzVDAwOjAwOjAwKzAwOjAwIiwgIjJhYTk4ZGEyLWExM2MtNDU3MS1hNjg1LThkZjFiNjNlODIzZCJd>)