4

信息:不是应该在这里解决的 LinearAlloc 问题!

你好,

我的问题是分析 LinearAlloc 超出容量错误(1)。虽然我已经有了错误的解决方案,但我仍然需要一种方法来分析正在运行的应用程序的使用大小。我使用的是Android 4.0.3(不能更新),也就是说容量是8mb。

错误发生在运行时,因为应用程序/库是动态加载的(2)。在第 306 行的 LinearAlloc.cpp (3) 中,我的解决方案是:

LOGVV("--- old=%d size=%d new=%d", startOffset, size, nextOffset);

如何启用 VeryVerbose 日志级别?

或者

是否有另一种方法可以访问 bootclasspath 类加载器标头的已用内存大小(参见(3))?

也许来自 NDK-Api?

如果我被正确告知,它就是类信息的记忆。我正在寻找该用途的特定内存。

使用了多少容量以及如何在运行时访问它?

没有必要在代码中访问它我只需要这个值。如果它是可计算的,dumpsys meminfo或者DDMS它是否也可以解决问题。

不需要root的解决方案是首选!

(1) LinearAlloc 超出容量

(2) 不允许发布3个链接:google: Custom Classloading Android

(3) LinearAlloc.cpp

编辑:添加 NDK-API 作为可能的解决方案。

PS这是我的第一个问题/欢迎任何改进建议。

4

1 回答 1

0

据我所知,没有适用于 Dalvik LinearAlloc Si​​ze 的 SDK/NDK API。但是你可以通过访问 Linux Interface /proc//smap 来计算这个大小以获取详细信息。

地图:

/dev/ashmem/dalvik-LinearAlloc

在 Dalvik 代码中,此内存最大映射大小为16M。而这个内存是mmap分配的,所以基本块是4K。所以如果你想计算这个内存使用量是使用@Smap RSS

于 2014-03-20T08:19:42.963 回答