如果在Linux下运行adb logcat命令,可以看到如下的输出:
GC_EXTERNAL_ALLOC freed 297K, 49% free 3411K/6663K, external 24870K/26260K, paused 83ms
其中D/dalvikvm表示由dalvikvm输出的调试信息,括号后的数字代表dalvikvm所在进程的pid。
GC_CONCURRENT表示触发垃圾收集的原因,有以下几种:
- GC_MALLOC, 内存分配失败时触发
- GC_CONCURRENT,当分配的对象大小超过384K时触发
- GC_EXPLICIT,对垃圾收集的显式调用(System.gc)
- GC_EXTERNAL_ALLOC,外部内存分配失败时触发
前面Free的内存是VM中java使用的内存,external是指VM中通过JNI中Native的类中的malloc分配出的内存例如Bitmap和一些Cursor都是这么分配的。
在Davilk中,给一个程序分配的内存根据机型厂商的不同,而不同,现在的大部分的是32M了,而在VM内部会把这些内存分成java使用的内存和 Native使用的内存,它们之间是不能共享的,就是说当你的Native内存用完了,现在Java又有空闲的内存,这时Native会重新像VM申请,而不是直接使用java的。
分享到:
相关推荐
D/dalvikvm( 1849): GC_FOR_ALLOC freed 673K, 22% free 5143K/6512K, paused 41ms, total 47ms I/ActivityManager( 1670): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=...
* GC_CONCURRENT: 当应用程序的堆内存快要满的时候,系统会自动触发GC操作来释放内存。 * GC_FOR_MALLOC: 当应用程序需要分配更多内存,可是现有内存已经不足的时候,系统会进行GC操作来释放内存。 * GC_HPROF_DUMP_...
- **D/dalvikvm(1787):GC_CONCURRENT freed1963K,31%free10552K/15256K,paused4ms+37ms,total120ms** - **知识点**:此条日志记录了Dalvik虚拟机进行并发垃圾回收(GC_CONCURRENT)的过程。 - **freed1963K**:...
根据提供的信息,我们可以总结出以下关于MSD6A801 TVAPP调试的相关知识点: ### 一、MSD6A801方案简介 MSD6A801是一款高性能的电视芯片解决方案,广泛应用于智能电视领域。它支持多种多媒体处理技术和高级功能,...
11-23 09:44:56.947: D/dalvikvm(1585): GC_FOR_MALLOC freed 3278 objects / 311568 bytes in 31ms rejecting opcode 0x21 at 0x000a rejected Lorg/apache/log4j/config/PropertySetter;.getPropertyDescriptor ...
核心:dalvikvm –cp dex化jar路径 需要执行的主函数类完整类名 主函数参数主函数多个参数的空格隔开前置说明ANDROID_DATA默认为/data执行dalvikvm后需要生成一个dex文件存放在$ANDROID_DATA/dalvik-cache 目录下...
例如,错误信息"02-04 21:46:08.703: ERROR/dalvikvm-heap(2429): 1920000-byte external allocation too large for this process"表明系统尝试分配1.92MB的外部内存,但超过了进程的限制。这可能是因为一次性加载了...
本文从应用程序到内核的视角对...同时,这也有助于开发者更好地进行系统级编程,调试和优化应用性能。在进行系统集成时,这些概念同样重要,因为它们影响了应用如何与Android框架交互以及应用如何与硬件设备交互。
接下来轻微则Android系统开始结束后台任务来增加不断增加的堆内存问题,最后可能直接出现OOM,同时有时候GC还可能出现GC freed 0 objects / 0 bytes in 75ms这样的问题,对于Java的内存管理我们近期已经说到了,就...
- **排除弱引用**:右键点击某一项,选择Path to GC Roots -> exclude weak/soft references,进一步筛选出与程序相关的所有可能有内存泄露的类。 通过以上步骤,我们可以有效地检查和定位Android应用中的内存...
### Android的24MB内存限制详解 #### 一、引言 在早期的Android设备上,如G1等,为了确保系统的稳定运行与资源的有效利用,Android系统对每个进程施加了一个内存限制,默认为24MB。对于某些较老的设备,这一限制...
android的虚拟机dalvik源码: run-core-tests.sh Android.mk NOTICE MODULE_LICENSE_APACHE2 README.txt /libdex /libcore-disabled /dexopt /libcore /tools /tests .../dalvikvm /docs /dvz /vm /dx
DalvikVM 是 Android 系统的核心组件之一,它将编译后的 Java 字节码转换为 Dalvik 可执行格式(Dex 文件),使得应用能在低内存设备上高效运行。在 HarmonyOS 2 中,DalvikVM 的优化可能涉及以下几个方面: 1. ...
### 有关Android内存泄漏的问题及解决方案 #### 一、OOM现象与定义 在Android开发过程中,经常遇到的一个问题是“Out Of Memory”(简称OOM),即内存溢出错误。这种错误通常发生在应用程序尝试分配超出系统允许...
环境没有Android运行时组件,因此某些功能将不可用(DalvikVM,OpenSLES等)。 如何使用 确保已安装并正在运行Docker。 git clone https://github.com/termux/termux-docker && cd ./termux-docker ./run.sh或./...
这种格式更紧凑,有助于减少内存占用和提高运行效率。 编译或运行代码生成到Dalvik VM的过程通常包括以下几个步骤: 1. **源代码编写**:开发者使用Java语言编写Android应用的源代码。 2. **编译**:源代码通过...
- **dalvik/dalvikvm/main.c**:这是Dalvik虚拟机的主要实现文件。Dalvik虚拟机的设计考虑到了低内存环境下的性能优化。 通过以上对Android 2.1源码结构的详细解析,我们可以看到每个目录及其子目录所扮演的角色,...
� 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...
adb shell exec dalvikvm -Xbootclasspath:p/system/framework/core.jar:/system/framework/framework.jar:/data/app/Notepadv3.apk \ junit.textui.TestRunner com.google ``` 这条命令指定了测试类的路径,并...
这个错误表示应用程序消耗了过多的内存,超过了系统分配的限制,导致系统无法再为该应用分配更多的内存。下面将详细讨论Android OOM的原因、表现、诊断方法以及解决策略。 **1. OOM原因** Android设备的内存资源...