关于native
内存使用:
即使您的应用程序中有 0 个本机代码,Android 框架也可以使用本机内存,请参阅此处的“本机”以供参考。例如,我只是尝试制作一个示例项目,只有一个Activity
和一个Button
,本机内存使用量为 18mb,如果我触发垃圾收集,它会下降到 8mb。为了在 Android Studio 中手动触发垃圾收集,您可以单击内存分析器窗口左上角的“垃圾箱”图标。不要对那个按钮害羞,我通常必须连续按多次才能看到内存使用量下降。
本机内存也可以从 Java 分配,而无需使用ByteBuffer.allocateDirect(int)
.
- 当您说直到 next 才加载任何本机库
Activity
时,如果您静态加载库(在 内static { }
),则不能保证在第二个 Activity 启动时实际加载该库。它很可能会在之前加载。如果您想检查库何时实际加载,您可以尝试将此方法添加到您的 C 代码中,它应该在加载库时调用。它非常脏,但是,嘿,它有效。你可能会记录一些东西而不是崩溃。
__attribute__((constructor)) void init(void) {
int a = *(int *) ((void *) 0);
}
关于code
内存使用,你应该减少你的代码:)
如果您还没有这样做,请在您的构建类型中设置minifyEnabled
为true
,假设您正在使用调试构建检查内存使用情况:
...
buildTypes {
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
...
此外,关闭即时运行(请参阅此处的“注释” )。