Jacky's blog
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • AI
  • 全部工具
  • CLI 工具
  • 编辑器
  • 开发工具
  • 构建工具
  • 版本控制
  • 调试工具
  • 网络工具
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • AI
  • 全部工具
  • CLI 工具
  • 编辑器
  • 开发工具
  • 构建工具
  • 版本控制
  • 调试工具
  • 网络工具
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)
  • tutorial
  • Jetpack

  • 组件

  • AndroidX

  • 动态化
  • APM

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

  • 鸿蒙

  • 工具

  • 其他

  • Kotlin

  • android_snip
  • ANDROID 深度技术面试问答
  • android tool
  • android图形系统
  • 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 显存相关,包括纹理、缓冲区、渲染状态等,这部分通常会通过特定的驱动接口管理。

#Android#APM#performance
上次更新: 2026/10/18, 22:14:48
大对象监控
移动端的网络优化

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

最近更新
01
Codex 使用与会话管理指南
10-17
02
Tailscale 入门:让自己的设备跨网络互联
10-15
03
GitHub CLI(gh)工作流与 CI 排查
10-08
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式