尖若磐石 2025-08-04 01:56 采纳率: 0%
浏览 8
已结题

16g运存的手机频繁被K后台有没有办法改善呢

16g运存的手机频繁被K后台有没有办法改善呢?
找到一份配置文件希望可以通过更改默认参数,来达到缓存更多app的目的。

# LMK
    setprop ro.lmk.pgscan_limit 3000
    setprop ro.lmk.swap_util_max 90
    setprop ro.lmk.threshold_decay 50 (网上没找到相关介绍的文章,求解) 
    setprop ro.lmk.file_high_percentage 70(网上没找到相关介绍的文章,求解)
    setprop ro.lmk.file_low_percentage 25(网上没找到相关介绍的文章,求解)
    setprop ro.lmk.stall_limit_medium 1 (网上没找到相关介绍的文章,求解) 
    setprop ro.lmk.stall_limit_critical 4 (网上没找到相关介绍的文章,求解) 
    setprop ro.lmk.stall_limit_freeze 15 (网上没找到相关介绍的文章,求解) 
    setprop ro.lmk.medium_min_adj 920
    setprop ro.lmk.critical_min_adj 201

    setprop ro.lmk.thrashing_limit 50
    setprop ro.lmk.thrashing_limit_critical 50
    setprop ro.lmk.thrashing_limit_decay 20
    setprop ro.lmk.min_thrashing_limit 10
    # use psi avg10 for mempressure in fwk to avoid ping-pong.
    setprop ro.config.use_psi_avg10_for_mempressure true
      # LowMemoryDetector of Framework
    setprop ro.lowmemdetector.psi_low_stall_us 100000
    setprop ro.lowmemdetector.psi_medium_stall_us 150000
    setprop ro.lowmemdetector.psi_high_stall_us 200000

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2025-08-04 01:57
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    在16GB RAM的手机上,如果频繁被系统Killed后台进程(Killed by system),说明系统认为当前内存不足,为了保持前台应用流畅而主动终止了后台应用。这种情况通常与**Linux内核的Low Memory Killer (LMK)**机制有关。


    🌟 问题核心分析

    LMK(Low Memory Killer)是Android系统中用于管理内存的重要机制,它会根据系统内存状态决定哪些后台进程可以被杀掉。如果你希望减少后台应用被杀的概率,可以通过调整以下配置来优化:


    解决方案:通过修改LMK参数改善后台缓存

    1. 理解关键参数含义

    | 参数 | 含义 | 建议值 | |------|------|--------| | ro.lmk.pgscan_limit | 控制扫描内存的频率,数值越小越频繁 | 3000(原值) | | ro.lmk.swap_util_max | Swap使用上限(仅适用于有Swap的设备) | 90(原值) | | ro.lmk.threshold_decay | 内存阈值衰减系数 | 50(原值) | | ro.lmk.use_moto_strategy | 使用摩托罗拉策略(可能影响内存回收逻辑) | true(原值) | | ro.lmk.psi_complete_stall_ms | PSI完成延迟时间 | 400(原值) | | ro.lmk.psi_partial_stall_ms | PSI部分延迟时间 | 50(原值) | | ro.lmk.file_high_percentage | 文件缓存高阈值 | 70(原值) | | ro.lmk.file_low_percentage | 文件缓存低阈值 | 25(原值) | | ro.lmk.swap_free_low_percentage | Swap空闲低阈值 | 10(原值) | | ro.lmk.kill_heaviest_task | 是否优先杀死占用内存最多的任务 | true(原值) | | ro.lmk.kill_heaviest_ordered | 按顺序杀死最重任务 | true(原值) | | ro.lmk.kill_timeout_ms | 杀死超时时间 | 100(原值) | | ro.lmk.stall_limit_medium | 中等延迟限制(未找到官方文档) | 1(原值) | | ro.lmk.stall_limit_critical | 关键延迟限制 | 4(原值) | | ro.lmk.stall_limit_freeze | 冻结延迟限制 | 15(原值) | | ro.lmk.medium_min_adj | 中等优先级最低adj值 | 920(原值) | | ro.lmk.critical_min_adj | 关键优先级最低adj值 | 201(原值) | | ro.lmk.freeze_min_adj | 冻结优先级最低adj值 | 50(原值) | | ro.lmk.kswapd_limit | kswapd内存限制 | 90(原值) | | ro.lmk.kswapd_limit_decay | kswapd衰减系数 | 10(原值) | | ro.lmk.kswapd_min_adj | kswapd最小adj值 | 201(原值) | | ro.lmk.thrashing_limit | Thrashing限制 | 50(原值) | | ro.lmk.thrashing_limit_critical | 关键Thrashing限制 | 50(原值) | | ro.lmk.thrashing_limit_decay | Thrashing衰减系数 | 20(原值) | | ro.lmk.min_thrashing_limit | 最小Thrashing限制 | 10(原值) |


    🛠️ 优化建议

    1. 降低LMK的敏感度

    • 提高内存阈值:让系统更“宽容”地保留后台应用。

      setprop ro.lmk.pgscan_limit 5000
      setprop ro.lmk.swap_util_max 80
      setprop ro.lmk.file_high_percentage 80
      setprop ro.lmk.file_low_percentage 30
      setprop ro.lmk.swap_free_low_percentage 15
      
    • 增加内存回收延迟

      setprop ro.lmk.psi_complete_stall_ms 600
      setprop ro.lmk.psi_partial_stall_ms 100
      setprop ro.lmk.stall_limit_medium 2
      setprop ro.lmk.stall_limit_critical 6
      setprop ro.lmk.stall_limit_freeze 20
      
    • 提高kswapd内存限制

      setprop ro.lmk.kswapd_limit 95
      setprop ro.lmk.kswapd_limit_decay 5
      
    • 增大thrashing限制

      setprop ro.lmk.thrashing_limit 70
      setprop ro.lmk.thrashing_limit_decay 15
      

    2. 避免过度杀进程

    • 关闭某些策略(谨慎操作):

      setprop ro.lmk.use_moto_strategy false
      setprop ro.lmk.kill_heaviest_ordered false
      
    • 允许更多后台应用运行

      setprop ro.lmk.kill_heaviest_task false
      setprop ro.lmk.freeze_min_adj 30
      setprop ro.lmk.critical_min_adj 100
      

    3. 持久化配置(需root权限)

    上述命令只能临时生效,若想永久生效,需要将这些配置写入系统文件或使用自定义脚本启动时加载。

    例如,在 /system/etc/init.d/ 目录下创建一个脚本文件(如 99_lmk.sh),内容如下:

    #!/bin/sh
    setprop ro.lmk.pgscan_limit 5000
    setprop ro.lmk.swap_util_max 80
    setprop ro.lmk.file_high_percentage 80
    setprop ro.lmk.file_low_percentage 30
    setprop ro.lmk.swap_free_low_percentage 15
    setprop ro.lmk.psi_complete_stall_ms 600
    setprop ro.lmk.psi_partial_stall_ms 100
    setprop ro.lmk.stall_limit_medium 2
    setprop ro.lmk.stall_limit_critical 6
    setprop ro.lmk.stall_limit_freeze 20
    setprop ro.lmk.kswapd_limit 95
    setprop ro.lmk.kswapd_limit_decay 5
    setprop ro.lmk.thrashing_limit 70
    setprop ro.lmk.thrashing_limit_decay 15
    

    然后赋予执行权限:

    chmod +x /system/etc/init.d/99_lmk.sh
    

    📌 注意事项

    • 不要随意关闭所有内存回收机制,否则可能导致系统崩溃或卡顿。
    • 某些参数(如 stall_limit_*thrashing_limit*)没有官方文档支持,建议先测试后再部署。
    • 如果你不是开发者或不熟悉系统底层,不建议随意修改这些参数,以免导致系统不稳定。

    总结

    通过合理调整LMK相关参数,可以有效缓解16GB RAM手机频繁被K后台的问题,但需注意平衡性能和稳定性。

    📋 重点步骤总结:

    1. 提高内存阈值,如 ro.lmk.pgscan_limitro.lmk.file_high_percentage
    2. 增加内存回收延迟,如 ro.lmk.psi_complete_stall_ms
    3. 优化kswapd和thrashing设置,提升后台应用存活率。
    4. 持久化配置,确保每次重启后都生效。
    5. 谨慎关闭某些策略,避免系统异常。

    如需进一步帮助,可提供你的手机型号和系统版本,我可以帮你定制更具体的配置方案。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月4日
  • 修改了问题 8月4日
  • 修改了问题 8月4日
  • 修改了问题 8月4日
  • 展开全部