Я собираю Android-4.0.4 для odroid-x на lenovo x220 core i7 8GB of RAM под управлением Linux Mint 12 (Ubuntu-11.10). Я запускаю 5 заданий для сборки, и через некоторое время OOM срабатывает и убивает десятки процессов, пока не убьет java-процессы, запущенные моей сборкой, и чувствует себя счастливым. Под довольным я подразумеваю, что Linux не запускает OOM после этого. Я загрузил мой dmesg после завершения процесса. Сначала OOM убивает мои вкладки chrome, но они невиновны, так как OOM все еще срабатывает после того, как все они были убиты.
Но даже после того, как все они были убиты, OOM все еще срабатывает и ищет, кого бы еще принести в жертву. Он добирается до процессов java, запущенных моей командой make. Он убил их один за другим: CODE:
$ 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
Кто-нибудь сталкивался с тем же при сборке android из исходников? Что может быть утечкой в сборке java?
Это не ненормально. У меня раньше было это обсуждение с кем-то, кто создает собственные дистрибутивы Android. Вам потребуется намного больше памяти, чем 8 ГБ. IIRC они использовали RAM 32 ГБ.