android Dvm 的内存模型是啥
时间: 2024-05-21 17:14:27 浏览: 15
Android DVM(Dalvik Virtual Machine)的内存模型是基于标记清除垃圾收集器的。它包含了堆和栈两种内存空间。
堆是用来存储对象的内存空间,它是动态分配的。Dalvik 虚拟机中的堆被划分为两个不同的区域:新生代和老年代。新生代是用来存储新创建的对象的,而老年代则是用来存储存活时间较长的对象的。Dalvik 虚拟机使用分代垃圾回收算法来管理堆内存,这使得它能够更有效地处理堆内存中的垃圾对象。
栈是用来存储方法调用的内存空间。每当一个方法被调用时,都会为该方法创建一个新的栈帧,并将其压入栈中。当方法执行完毕后,该栈帧会被弹出栈,释放内存空间。栈具有先进后出的特点,因此可以很方便地进行方法调用的嵌套。
除了堆和栈之外,Android DVM 还包括了一些其他的内存空间,例如常量池、直接内存等。这些内存空间都有不同的特点和用途,可以为 Android 应用的开发提供更多的灵活性和可扩展性。
相关问题
Android DVM 垃圾回收算法
Android DVM(Dalvik虚拟机)使用基于标记-清除(mark-and-sweep)算法的垃圾回收器。下面是DVM垃圾回收的基本流程:
1. 标记阶段:从根对象开始遍历,标记所有可达对象,把它们标记为非垃圾对象。
2. 清除阶段:遍历整个堆,将未被标记的内存块清除,释放给系统。
3. 压缩阶段(可选):将所有存活的对象压缩到一起,以便在垃圾回收后减少内存碎片。
需要注意的是,DVM的垃圾回收器是基于标记-清除算法的,这种算法会产生内存碎片,可能会导致内存分配效率降低。因此,DVM还支持基于分代(generational)的垃圾回收算法,可以更好地处理内存碎片问题。在分代垃圾回收中,内存被分为不同的年代,每个年代使用不同的垃圾回收算法进行处理。年轻代使用标记-复制(mark-and-copy)算法,老年代使用标记-清除算法,这样可以更好地平衡内存分配效率和垃圾回收效率。
dvm虚拟机配置文件
DVM虚拟机配置文件是Dalvik虚拟机的配置文件,用于设置Dalvik虚拟机运行时的参数。配置文件位于Android系统源代码树中的`dalvik/dalvikvm/DalvikDefaults.cpp`文件中,主要包括以下几个方面的配置:
1. 堆内存大小:可以通过设置`dalvik.vm.heapsize`参数来指定Dalvik虚拟机的堆内存大小,单位为MB。
2. GC策略:可以通过设置`dalvik.vm.heapgrowthlimit`和`dalvik.vm.heaptargetutilization`参数来调整Dalvik虚拟机的GC策略。
3. 调试选项:可以通过设置`dalvik.vm.jdwp.options`参数来启用Dalvik虚拟机的调试选项,例如设置端口号、是否允许附加调试器等。
4. 类加载器:可以通过设置`dalvik.class.loader`参数来指定Dalvik虚拟机使用的类加载器。
5. JIT编译器:可以通过设置`dalvik.vm.execution-mode`参数来选择Dalvik虚拟机的执行模式,例如选择解释器模式、JIT编译模式或AOT编译模式等。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)