Status Update
Comments
yb...@google.com <yb...@google.com> #2
Hi, thanks for report!
Could you attach a bit more information about the heap at this point (e.g. a heap dump) if the leak is not reproducible in trivial project?
an...@gmail.com <an...@gmail.com> #3
Attached!
an...@gmail.com <an...@gmail.com> #4
I looked into the heap dump, seems like we are not disposing certain snapshots. Current snapshot id seems to be around 42k, but we have 108, 116 and 14123 in invalid SnapshotIdSet
for current global snapshot.
It is hard to figure out what caused it without repro though, as those snapshots seem to be already collected by GC.
an...@gmail.com <an...@gmail.com> #5
I managed to repro it after a bunch of debugging. The bad news is that it's caused when using
Repro:
- Add
implementation io.coil-kt:coil-compose:2.1.0
to build.gradle - Add the following composable:
@Composable fun Leak() {
val lazyListState = rememberLazyListState()
val items by remember { mutableStateOf(List(10000) { it }) }
LazyColumn(state = lazyListState) {
items(items) {
Box(Modifier.fillMaxWidth()) {
AsyncImage(
model = "https://i.picsum.photos/id/104/200/200.jpg?hmac=3XxEVXVjwoI45-6sum_iMwNZ52GT-SJacVWr4fh4hqI",
contentDescription = null
)
}
}
}
}
- Scroll
- Memory 📈
an...@gmail.com <an...@gmail.com> #6
Branch: androidx-main
commit e82b3518094e5451dd4697f31a412c10075b28c5
Author: Andrei Shikov <ashikov@google.com>
Date: Wed Jul 20 23:43:58 2022
Dispose nested snapshots created from transparent snapshots
Adds a flag to transparent snapshots to "manage" wrapped snapshots which forces dispose of the wrapped snapshot whenever transparent one is disposed.
This flag is only enabled for the snapshots taken inside transparent snapshots, fixing memory leaks in certain conditions.
Fixes a minor bug where transparent snapshot wasn't receiving reads from nested snapshots as well.
Fixes: 239603305
Test: SnapshotTests#testNestedWithinTransparentSnapshotDisposedCorrectly
Change-Id: I62eddd279c8cf44b032d852d646c9ba21ad08a39
M compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt
M compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt
an...@gmail.com <an...@gmail.com> #7
Thanks for the quick turnaround!
da...@google.com <da...@google.com> #8
The following release(s) address this bug:
androidx.compose.runtime:runtime:1.3.0
da...@google.com <da...@google.com> #9
an...@gmail.com <an...@gmail.com> #10
ap...@google.com <ap...@google.com> #11
Branch: androidx-master-dev
commit 8e46b9ca1f55b040a18dd86833880b5106d103b2
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Oct 10 19:17:50 2018
Update Room's ANTLR Parser to 4.7.1
Updating to the latest ANTLR version fixes the performance issue
described in
Room's SQL Parser since it contains left-recursive rules. Specifically
SQLite.g4 has multiple recursions to describe an expression as defined
in
queries that causes the parser to use the adaptivePredict algorithm
then the build time increases significantly due to Room's query
parsing.
Also bumped Room's version to 2.1.0-alpha02
Bug: 117401230
Test: ./gradlew room:integration-tests:testapp:cC
Change-Id: I4d0799a11ccee816ab209cbf74e7dcf2b2ce1a18
M buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
M buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
da...@google.com <da...@google.com> #12
an...@gmail.com <an...@gmail.com> #13
- Ankit
Description
Version used: 1.1.1
Devices/Android versions reproduced on: Latest android emulator on Mac OS running Oreo image, Lenovo K6 Power
Also tried with Android studio 3.2 stable and Android 3.3 Preview version as well.
Building my project takes 15 min. If I comment out below line
annotationProcessor "android.arch.persistence.room:compiler:$ROOM_VERSION"
from my app's build.gradle, it takes only a minute to build the project. It's not a very big project (entity count wise) and I did not try reproducing the issue in a sample project. However, I can reproduce the
I have tried:
1. Cleaning. Rebuilding...
2. Invalidate caches/Restart.
3. Even tried migration to using all the androidx artifacts.
It seems like a bug in Room's annotationProcessor but I don't have a sample project to share.