> 文章列表 > Android---导致OOM的常见原因

Android---导致OOM的常见原因

Android---导致OOM的常见原因

目录

内存溢出OOM

单应用可用的最大内存

导致 OOM 的常见原因

内存实时监控

内存溢出OOM

单应用可用的最大内存

\\bullet dalvik.vm.heapstartsize,它表示堆分配的初始大小。

\\bullet dalvik.vm.heapgrowthlimit,它表示单个进程内存限定值。

\\bullet dalvik.vm.heapsize,单个进程可用的最大内存。

当定义了heapgrowthlimit,就会它的值来限定单个进程的内存值。通常情况下 heapsize 值会大于 heapgrowthlimit 的值。当设置 heapgrowthlimit 的值不够时,我们就可用在清单文件(AndroidManifest.xml)文件里添加  “android:largeHeap=true” 来使用 heapsize 的值。

导致 OOM 的常见原因

1. 加载大图片

2. 内存泄漏

java 异常体系

内存实时监控

JPDA

\\bullet Java 平台调试体系 JPDA(Java PlatformDebugger Architecture),它是 Java 虚拟机为调试和监控虚拟机专门提供的一套接口

\\bullet JVMTI 是 JVM 对外暴露的接口,JDI 是实现了 JDWP 通信协议的客户端,调试器通过它和 JVM 中被调试程序通信。

 JVMTI 重要功能

\\bullet 重新定义类

\\bullet 跟踪对象分配和垃圾回收过程

\\bullet 遵循对象的引用树,遍历堆中的所有对象

\\bullet 检测 Java 调用堆栈

\\bullet 暂停(和恢复)所有线程

ART TI

ART(Android Runtime)。在 Android 8.0及更高版本中,ART 工具接口(ART TI )可提供某些运行时的内部架构信息,并允许分离器和调试程序影响影响应用的运行时行为,这可用于实现最先进的性能工具