gpt4 book ai didi

android - Android上 native 堆的最大大小?

转载 作者:IT王子 更新时间:2023-10-28 23:31:53 29 4
gpt4 key购买 nike

如果我理解正确的话,一个 android 进程有两个堆 - 一个由 VM 管理,一个由 native 管理。

VM 堆的大小不能超过 16mb(至少,这个值在某些手机上可以更高)。

但是 native 堆的最大大小呢?

16 mb 的限制似乎不是硬性限制,因为应用程序可以通过 NDK 分配超过 16 mb 的空间,但是当内存量很大时,操作系统会开始杀死其他进程,可能还会杀死前台进程用来。

操作系统何时开始以这种方式运行?当原生堆 + VM 堆大小超过 16mb 时?

Debug.getNativeHeapSize() 给出了原生堆的大小,但是有没有一个函数可以检查组合的原生 + VM 堆大小?

很想听听知道这是如何工作的人的消息!

最佳答案

Android 内存管理中没有“死亡线”。当系统需要杀死进程来回收内存时,它会考虑许多不同的因素,包括进程的重要性(取决于它是否在前台,或为前台应用程序提供服务等因素)以及它有多少内存使用。

如果您的进程处于空闲状态,并且占用的内存比其他任何东西都多,那么它很可能首先被杀死。

确切的算法随着时间的推移发生了一些变化,系统不对特定行为做出任何保证。

关于android - Android上 native 堆的最大大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5880870/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com