Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • tutorial
  • jetpack

  • components

  • androidx

  • 动态化
  • apm

    • apm相关概念
    • Android稳定性治理
    • Android低端机性能优化
    • monkey测试
    • bitmap
    • 大对象监控
    • android内存
      • 内存分配和管理机制
        • Dalvik(或 ART)Heap
        • Native Heap
        • 其他映射区域与内存
    • 移动端的网络优化
    • 记一次anr问题查询ThreadedRenderer
    • 记一次shrink代码减包调研方案
    • proguard
    • R8
    • perfetto
    • mat
  • module

  • harmony

  • tool

  • other

  • kotlin

  • 《android》
  • apm
Jacky
2025-04-01
目录

android内存

# 内存分配和管理机制

在 Android 进程中,整体的内存可以大致分为以下几部分,每一部分都有各自的分配和管理机制:

总体来说,Dalvik/ART Heap 与 Native Heap 是应用内存的主要组成部分:

  • Dalvik/ART Heap:主要负责 Java 层的对象存储,内存大小固定(由系统配置),过多的对象会导致 OOM。
  • Native Heap:主要用于原生代码分配的内存,虽然没有严格的虚拟机内部上限,但最终也会受到整个进程内存和设备物理内存的限制。

此外,不同区域的内存分配方式和回收机制各异(比如 Dalvik/ART 的垃圾回收与 native 的 malloc/free),理解这些有助于更好地优化和排查内存问题。

# Dalvik(或 ART)Heap

  • 用于存放 Java 对象(即应用代码中新创建的对象),由 Dalvik/ART 虚拟机管理。

  • 受限于每个进程的堆大小(例如 dalvik.vm.heapsize 参数),因此当应用创建的对象过多时可能触发 OOM。

  • 现代 Android(ART)中,采用 AOT 编译后,内存管理虽然有变化,但 Java 对象仍在这块堆内分配。

  • 用户可以根据 adb shell getprop 过滤 heap 查看设备设置的heap相关设备

# Native Heap

  • 用于 C/C++ 代码通过 malloc/new 分配的内存,或者通过 JNI 调用分配的内存。

  • 不受 Dalvik/ART 堆大小限制,但仍受整个进程虚拟内存和物理 RAM 限制。

  • 包括一些系统库、第三方原生库以及底层驱动(如 OpenGL ES 驱动)的内存分配。

# 其他映射区域与内存

  • Stack:每个线程都有自己的调用栈,存放局部变量、函数调用信息等,通常较小(几 MB)。

  • mmap 映射:包括.so、.dex、.apk 等文件映射,这部分内存由操作系统通过 mmap 分配,并且可能会与其他进程共享(例如只读共享库)。

  • Graphics Heap / GFX:主要与 GPU 显存相关,包括纹理、缓冲区、渲染状态等,这部分通常会通过特定的驱动接口管理。

上次更新: 2025/04/01, 16:51:44
大对象监控
移动端的网络优化

← 大对象监控 移动端的网络优化→

最近更新
01
npx 使用指南
10-12
02
cursor
09-28
03
inspect
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式