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 )可提供某些运行时的内部架构信息,并允许分离器和调试程序影响影响应用的运行时行为,这可用于实现最先进的性能工具

猜你喜欢

转载自blog.csdn.net/qq_44950283/article/details/130145586