Я собираю Android-4.0.4 для odroid-x на lenovo x220 core i7 с 8 ГБ оперативной памяти под управлением Linux Mint 12 (Ubuntu-11.10). Я запускаю 5 заданий на сборку, и через некоторое время OOM запускает и убивает десятки процессов, пока он не убьет java-процессы, запущенные моей сборкой, и не почувствует себя счастливым. Под счастливым я подразумеваю, что Linux после этого не запускает OOM. Я загрузил мой dmesg после завершения процесса убоя. Сначала OOM убивает мои хромированные вкладки, но они невиновны, поскольку OOM все еще срабатывает после того, как все они были убиты.
Но даже после того, как все они были убиты, OOM все еще срабатывает и ищет кого-то другого, чтобы пожертвовать собой. Он попадает в java-процессы, запущенные моей командой make. Он убивал их одного за другим: КОД:
$ grep -i "kill process" dmesg.txt
[181532.565512] Out of memory: Kill process 9161 (chromium-browse) score 305 or sacrifice child
[...]
[181560.198935] Out of memory: Kill process 7128 (chromium-browse) score 300 or sacrifice child
[181560.398301] Out of memory: Kill process 6823 (java) score 118 or sacrifice child
[181560.412076] Out of memory: Kill process 6855 (java) score 119 or sacrifice child
[181560.425394] Out of memory: Kill process 6859 (java) score 119 or sacrifice child
Я описал свою проблему на форум odroidx, но я боюсь, что это проблема окружающей среды. Вот почему я задаю здесь вопрос. Я собирал android из исходников на этом компьютере в течение 6 месяцев и никогда не испытывал таких проблем с памятью. В случае необходимости я использую sun-java6:
$ dpkg --get-selections | grep java
java-common
libhsqldb-java
libjaxp1.3-java
libreoffice-java-common
libservlet2.5-java
libxerces2-java
plasma-scriptengine-javascript
sun-java6-bin
sun-java6-jdk
sun-java6-jre
sun-java6-plugin
$ uname -a
Linux xxx-ThinkPad-X220 3.0.0-17-generic #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Кто-нибудь испытывал такую же сборку андроида из исходников? Что может протекать в сборке java?
Это не ненормально. Я уже обсуждал это раньше с кем-то, кто создает собственные дистрибутивы Android. Вам понадобится намного больше памяти, чем 8 ГБ. IIRC они использовали RAM 32 ГБ.