Jon*_*itz 8 android dexclassloader
我们有一个大型的应用程序,总是遇到恐惧方法计数限制.我被要求想方设法让它做得更多,包括支持插件.寻找方法来卸载代码,我跑过JNI提示其说
只有在与ClassLoader关联的所有类都可以进行垃圾回收时,才会卸载类,这种情况很少见,但在Android中并非不可能.
这似乎意味着如果你说,你可以卸载一个插件
DexClassLoader为每个.jar文件使用new ,所以,我创建了一个测试用例:
ReferenceQueue<ClassLoader>使用该队列创建了一个并创建了对我的两个加载器的弱引用; 我创建/启动了一个无限循环,执行队列.remove()和报告的线程.ReferenceQueue<Class<?>>并getClass()使用队列创建了对每个插件的弱引用; 我创建/启动了另一个监视类引用队列的线程.我的监控线程似乎工作 - loader2当我loader1以前错误地加载两个插件时,我看到得到gc-ed ;-) - 但是否则我的线程保持沉默,即使在4.3.我可能在这个测试用例中遗漏了一些明显的东西,或者仍然是这样的情况
Dalvik VM目前没有卸载类
正如Google员工fadden在Android中所说的那样:什么时候系统会卸载类?
Dalvik VM 仍然不卸载类。JNI Tips 页面鼓励良好的行为,这样如果虚拟机有一天开始卸载类,您的应用程序就不会崩溃。
| 归档时间: |
|
| 查看次数: |
1618 次 |
| 最近记录: |