AOSP 模拟器内存​​很快填满

AOSP emulator memory filling up very quickly

我目前正在使用 AOSP 并为 Android Automotive OS 构建应用程序。我在两台不同的 PC(都是 运行 Ubuntu)上编译了相同的代码(从版本控制中检出)。其中之一(使用 Intel CPU)仿真器启动正常并且仿真器稳定。

在另一台 PC(AMD CPU)上,模拟器启动,但很快就会因 OutOfMemory 错误而崩溃。 AOSP 正在快速终止所有进程,然后是它的系统进程,最后由于 'System is deadlocked on memory'.

而重新启动

我发现罪魁祸首是系统进程。它囤积了大量的内存: the android.hardware.automotive.vehicle process is hoarding memory。它保持快速增长,最后 OS 重新启动。

当我使用meminfo工具检查进程的内存使用情况时,我发现如下: The android.hardware.automotive.vehicle process is using over 2GB of RAM.

因此我的问题是:

  1. 你知道发生了什么事吗?
  2. 如何调试这个系统进程?
  3. 为什么系统进程在一台 PC 上的行为与另一台 PC 上的行为不同?

对于 运行 关注此问题的人:

经过大量尝试,我发现必须非常小心地向 VHAL 定义(想想 types.halDefaultConfig.h 文件)添加自定义车辆属性。在我的例子中,我添加了一个采样率为 VehiclePropertyChangeMode set to CONTINUOUS, but did not add a minimum and maximum 的车辆 属性。这导致 android.hardware.automotive.vehicle 服务出于某种原因不断请求越来越多的内存,最终模拟器会崩溃。

如果您想防止这种情况发生,请确保 add a minSampleRate and maxSampleRate 在您的 DefaultConfig.h 文件中!