android - 我如何知道在任何给定时刻我有多少堆内存?

标签 android memory-leaks

我有一个进程一直死在同一个地方,并声称内存不足,但我偷偷怀疑这是一条红鲱鱼,我正在吃掉它在其他地方需要的内存。我很好奇我有什么选择可以实时查看内存的使用和释放情况。 ADB 是否有某种我可以观看的监视器?

TIA

最佳答案

我发现命令行 adb shell dumpsys meminfo 'your apps package name' 很有用。如果您想查看所有进程的信息,请使用 adb shell dumpsys meminfo。将输出传输到文本文件可能是值得的,因为有很多形式的数据:

** MEMINFO in pid 5527 [com.sec.android.widgetapp.weatherclock] **
                    native   dalvik    other    total
            size:     2868     5767      N/A     8635
       allocated:     2861     2891      N/A     5752
            free:        6     2876      N/A     2882
           (Pss):      532       80     2479     3091
  (shared dirty):      932     2004     6060     8996
    (priv dirty):      512       36     1872     2420

 Objects
           Views:        0        ViewRoots:        0
     AppContexts:        0       Activities:        0
          Assets:        3    AssetManagers:        3
   Local Binders:        2    Proxy Binders:        8
Death Recipients:        0
 OpenSSL Sockets:        0


 SQL
               heap:        0         MEMORY_USED:        0
 PAGECACHE_OVERFLOW:        0         MALLOC_SIZE:        0

从通过 USB 端口连接的真实设备返回

关于android - 我如何知道在任何给定时刻我有多少堆内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9002680/

相关文章:

android - 使用不同的键 Firebase Realtime DB 获取值

android - 无法使用@PrimaryKey(autoGenerate = true) 进行更新

python - 添加列表值时出现内存泄漏

javascript - Node.js 网络套接字内存泄漏?

android - 反编译APK并在android studio中导入

java - 为什么InetAddress.getLocalHost().getHostAddress()在android中返回127.0.0.1。但在JAVA程序中工作正常

c# - 将 android java 翻译成 xamarin c#

PHP算法大数组内存问题

c++ - 最常见的内存/资源泄漏错误

haskell - 为什么嵌套永远泄漏内存?