app
Go to file
fengge 4465887c96 内存优化: 修复 PTT 静态集合无界增长导致的内存泄漏风险
【问题背景】
CallBackResolution.java 中两个 static 集合 (memberInfoDtos、groupInfos)
用于暂存 PTT 引擎回调的群组/群成员信息。原实现使用 ArrayList/LinkedList,
仅在收到 groupNo==1 / memberNo==1 的边界事件时调用 clear()。

【潜在风险】
1. 若服务端漏发边界事件 (1) 或中途断流,列表将无限增长
2. 长周期运行 (消防值守台常驻) 时,Heap 中堆积大量 DTO 对象
3. 在 Android 低内存设备上 (armeabi-v7a 32位机型) 极易触发 OOM
4. 即使后续收到 clear 信号,GC 压力也会显著增加

【修复方案】
1. 将 List<DTO> 改为 LinkedHashMap<String, DTO>,以 id 作为 key:
   - 自动去重,避免同一成员/群组多次添加
   - 保持插入顺序,符合原有顺序遍历语义
2. 引入容量上限常量 MAX_GROUP_MEMBERS=500 / MAX_GROUP_INFOS=100
3. 每次 add 前检查 size,超限时移除最旧条目 (LRU 策略)
4. 同步更新 CallBackUtil 中对应的方法签名,改为 Map<String, DTO> 参数

【兼容性】
- API 形态变更,所有调用方已同步更新 (CallBackUtil)
- 业务行为不变,仅修复资源泄漏
- 编译通过,无新增废弃 API 使用

【影响范围】
- CallBackResolution.java
- CallBackUtil.java
2026-06-02 13:09:08 +08:00
.codegraph 优化 2026-06-01 23:24:28 +08:00
.idea 修复问题 2026-04-18 18:45:16 +08:00
app 内存优化: 修复 PTT 静态集合无界增长导致的内存泄漏风险 2026-06-02 13:09:08 +08:00
gradle 1 2026-04-26 19:15:48 +08:00
key 123 2026-04-01 22:23:47 +08:00
.gitignore 优化 2026-05-08 03:30:13 +08:00
build.gradle.kts webview 2026-04-29 10:21:38 +08:00
gradle.properties 123 2026-04-01 22:23:47 +08:00
gradlew 123 2026-04-01 22:23:47 +08:00
gradlew.bat 123 2026-04-01 22:23:47 +08:00
img.png 123 2026-04-01 22:23:47 +08:00
img_1.png ai 2026-05-20 11:11:50 +08:00
settings.gradle.kts webview 2026-04-29 10:21:38 +08:00