메모리 압력이 너무 높지만 GNU-Linux가 계속 실행 중일 때 Android가 충돌하는 이유는 무엇입니까?

메모리 압력이 너무 높지만 GNU-Linux가 계속 실행 중일 때 Android가 충돌하는 이유는 무엇입니까?

나는 Bionic과 나란히 실행되는 eGlibC 스택이 있는 Android 휴대폰과 Debian이 설치된 오래된 HP 타워라는 두 개의 장치를 가지고 있습니다.

내 HP 타워에는 512MB RAM이 있습니다.

내 휴대폰에는 2GB 메모리가 있습니다.

나는 사물을 주시하기 위해 두 가지를 모두 실행했습니다. 휴대폰 자체의 사양이 내 HP 타워보다 더 좋기 때문에 휴대폰에서 자료를 컴파일해 왔으며 ARM 어셈블리 작업을 하고 있으므로 적어도 나에게는 ARM 작업이 의미가 있습니다.

내 타워는 거의 항상 메모리가 부족합니다. 일반적으로 특정 시점에 약 20MB의 여유 RAM이 있으며, 수행 중인 작업에 따라 더 적은 경우도 있습니다. 내 타워는 40일 동안 가동되었습니다.

$uptime
17:34:14 up 40 days,  8:54, 12 users,  load average: 2.60, 2.14, 1.58

그러나 Android를 실행하는 내 휴대폰(낮은 메모리 환경을 위해 설계되어야 함)을 약 50MB의 사용 가능한 메모리로 푸시하면 충돌이 발생하며 이제 Android SDK/NDK와 같은 대규모 프로젝트를 컴파일하고 있으므로 이런 일이 더 자주 발생합니다.

  • 왜 이런거야?
  • 가능성은 무엇입니까? 이 문제를 해결하고 싶지만 Android 프로젝트의 모든 코드를 살펴보는 것은 불가능합니다.
  • 어디서부터 시작해야 할까요?

관련 정보