如何访问Classloaders / App Linearalloc类信息大小?

时间:2012-11-09 12:44:15

标签: android memory android-ndk classloader dalvik

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

您好,

我的问题是对LinearAlloc超出容量误差的分析(1)。虽然我已经有了错误的解决方案,但我仍然需要一种方法来分析正在运行的应用程序的使用大小。 我使用的是Android 4.0.3(更新不是一个选项),这意味着容量为8mb。

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

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

如何启用VeryVerbose Loglevel?

或者

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

可能来自NDK-Api?

如果我被正确告知,那就是类信息的记忆。 该用法的具体内存是我正在寻找的。

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

没有必要在代码中访问它我只需要值。 如果可以从dumpsys meminfoDDMS计算,那么它也可以解决问题。

不需要root的解决方案优先!

(1)LinearAlloc exceeded capacity

(2)不允许发布3个链接:google:自定义类加载Android

(3)LinearAlloc.cpp

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

P.S。这是我的第一个问题/帖子,欢迎任何有关改进的建议。

1 个答案:

答案 0 :(得分:0)

据我所知,Dalvik LinearAlloc Si​​ze没有SDK / NDK API。但您可以通过访问Linux Interface / proc // smap来获取详细信息来计算此大小。

SMAP:

/dev/ashmem/dalvik-LinearAlloc

在Dalvik代码中,此内存最大地图大小 16M 。并且这个内存由mmap分配,所以基本块是4K。因此,如果您想要计算此内存使用情况,请使用RSS @ Smap。