信息:这里应该解决的不是 LinearAlloc 问题!
你好,
我的问题是分析 LinearAlloc exceeded capacity error(1)。虽然我已经有了错误的解决方案,但我仍然需要一种方法来分析正在运行的应用程序的已用大小。 我使用的是 Android 4.0.3(无法更新),这意味着容量为 8mb。
错误发生在运行时,因为应用程序/库是动态加载的(2)。 在第 306 行的 LinearAlloc.cpp (3) 中,我的解决方案是:
LOGVV("--- old=%d size=%d new=%d", startOffset, size, nextOffset);
如何启用 VeryVerbose 日志级别?
或者
有没有其他方法可以访问bootclasspath classloader header的已用内存大小(见(3))?
也许来自 NDK-Api?
如果我没记错的话,它是类信息的内存。 该用法的特定内存正是我要查找的内容。
使用了多少容量以及如何在运行时访问它?
没有必要在代码中访问它我只需要这个值。
如果可以从 dumpsys meminfo
或 DDMS
计算它是否也可以解决问题。
不需要root的方案优先!
(1) LinearAlloc exceeded capacity
(2) 不允许发布 3 个链接:google: Custom Classloading Android
(3) LinearAlloc.cpp
编辑:添加 NDK-API 作为可能的解决方案。
附言这是我的第一个问题/帖子,欢迎提出任何改进建议。
最佳答案
据我所知,没有针对 Dalvik LinearAlloc Size 的 SDK/NDK API。但是您可以通过访问 Linux 接口(interface)/proc//smap 来计算这个大小以获取详细信息。
map :
/dev/ashmem/dalvik-LinearAlloc
在 Dalvik 代码中,此内存最大映射大小为 16M。而这 block 内存是mmap分配的,所以基本 block 是4K。因此,如果您想计算此内存使用量,请使用 RSS
@Smap。
关于android - 如何访问类加载器/App Linearalloc 类信息大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308321/