【发布时间】:2014-02-05 18:09:47
【问题描述】:
我是安卓编程新手。随着时间的推移,可能 android 应用程序的内存消耗会显着增加。通过 MAT 分析,可以看到 GC 根为Native Stack 的对象正在堆积。这些对象在本机代码中被引用为全局引用,但随着时间的推移正确释放,我还放置了日志以确保计数匹配。
关于native stack 的文档并不清楚,因为它只是指出:
本机代码中的输入或输出参数,例如用户定义的 JNI 代码或 JVM 内部代码。这通常是因为许多方法具有本机部分,并且作为方法参数处理的对象成为 GC 根。例如,用于文件/网络 I/O 方法或反射的参数。
我不太确定它说的是什么,问题出在哪里以及如何解决。任何提示都非常感谢。提前致谢。
【问题讨论】:
-
对 JNI 中本地和全局引用的有用介绍:developer.android.com/training/articles/…。
标签: java android memory-leaks android-ndk