android / android/codelab-android-workmanager
Leak in SystemJobService
- Ngôn ngữ chính
- Kotlin
- Star
- 557
- Fork
- 242
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
Hi everyone,
we're using WorkManager in an app in which we've also [LeakCanary](https://square.github.io/leakcanary/) configured and we always receive this warning after a run of each Periodic Worker:
```
16:49:08.888 LeakCanary
====================================
HEAP ANALYSIS RESULT
====================================
1 APPLICATION LEAKS
References underlined with "~~~" are likely causes.
Learn more at https://squ.re/leaks.
774 bytes retained by leaking objects
Signature: 6491376cfe66b1cac0d47b3ae180fd902719aa5
┬───
│ GC Root: Global variable in native code
│
├─ android.app.job.JobService$1 instance
│ Leaking: UNKNOWN
│ Retaining 802 B in 15 objects
│ Anonymous subclass of android.app.job.IJobService$Stub
│ this$0 instance of androidx.work.impl.background.systemjob.SystemJobService
│ ↓ JobService$1.this$0
│ ~~~~~~
╰→ androidx.work.impl.background.systemjob.SystemJobService instance
Leaking: YES (ObjectWatcher was watching this because androidx.work.impl.background.systemjob.SystemJobService
received Service#onDestroy() callback)
Retaining 774 B in 14 objects
key = 155d4c85-1073-4df1-bd0f-250b40c959c8
watchDurationMillis = 5248
retainedDurationMillis = 246
mApplication instance of xx.yy.MyApp
mBase instance of android.app.ContextImpl
====================================
0 LIBRARY LEAKS
A Library Leak is a leak caused by a known bug in 3rd party code that you do not have control over.
See https://square.github.io/leakcanary/fundamentals-how-leakcanary-works/#4-categorizing-leaks
====================================
0 UNREACHABLE OBJECTS
An unreachable object is still in memory but LeakCanary could not find a strong reference path
from GC roots.
====================================
METADATA
Please include this in bug reports and Stack Overflow questions.
Build.VERSION.SDK_INT: 23
Build.MANUFACTURER: alps
LeakCanary version: 2.6
App process name: xx.yy.MyApp
Stats: LruCache[maxSize=3000,hits=101,misses=300675,hitRate=0%]
RandomAccess[bytes=11383030,reads=300675,travel=696095628841,range=23369842,size=28770980]
Heap dump reason: 1 retained objects, app is not visible
Analysis duration: 202141 ms
Heap dump file path: /storage/emulated/0/Download/leakcanary-xx.yy.MyApp/2021-03-08_16-45-32_740.
hprof
Heap dump timestamp: 1615218548838
Heap dump duration: 13889 ms
====================================
```
WorkManager library in use: `androidx.work:work-rxjava2:2.5.0`
LeakCanary library in use: `com.squareup.leakcanary:leakcanary-android:2.6`
Any advice? Did you see this warning yet?
I don't know if can be a useful info, but the app we're developing is a system app used on embedded device (Android based, obviously)
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với LeakCanary trace của issue và vòng đời của SystemJobService trên Android API 23, sau đó tái hiện bằng WorkManager 2.5.0 và LeakCanary 2.6 với một periodic worker. Hoàn thành nghĩa là xác định liệu service bị giữ lại có phải là một library leak có thể tái hiện hay không, đồng thời ghi lại hoặc sửa kết quả; issue không nêu tên file nguồn hay test nào.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- android, kotlin
- Lĩnh vực
- mobile-dev
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 25/100