信息:这里应该解决的不是linearalloc问题!
你好,
我的问题是分析LinearAlloc超出容量错误(1)。虽然我已经有了错误的解决方案,但我仍然需要一种方法来分析正在运行的应用程序的使用大小。
我正在使用android 4.0.3(更新不是一个选项),这意味着容量是8mb。
错误发生在运行时,因为应用程序/库是动态加载的(2)。
在linearalloc.cpp(3)中,306号线是我的解决方案:
LOGVV("--- old=%d size=%d new=%d", startOffset, size, nextOffset);
如何启用veryVerbose日志级别?

是否有其他方法访问bootclasspath类加载器头的已用内存大小(请参见(3))?
可能来自ndk api?
如果我得到正确的通知,它是用于分类信息的内存。
这种用法的特定内存是我要找的。
使用了多少容量,如何在运行时访问它?
不需要在代码中访问它,我只需要值。
如果它可以从dumpsys meminfoDDMS中计算,它也可以解决问题。
不需要根的解决方案是首选的!
(1)LinearAlloc exceeded capacity
(2)不允许发布3个链接:google:custom classloading android
(3)LinearAlloc.cpp
编辑:添加了ndk-api作为可能的解决方案。
附:这是我的第一个问题/帖子欢迎任何改进建议。

最佳答案

我知道dalvik linearalloc大小没有sdk/ndk api。但是您可以通过访问linux interface/proc//smap获取详细信息来计算这个大小。
Smap:

/dev/ashmem/dalvik-LinearAlloc

在dalvik代码中,这个内存最大映射大小是16m。这个内存是由mmap分配的,所以基本块是4k。所以如果你想计算这个内存使用量,使用的是RSS@smap。

09-07 01:39