我在运行 Linux Mint 12(Ubuntu-11.10)的 lenovo x220 core i7 8GB RAM 上为 odroid-x 构建了 Android-4.0.4。我启动了 5 个作业进行构建,一段时间后,OOM 触发并终止了数十个进程,直到它终止了我构建启动的 java 进程,并且对此感到满意。满意的意思是 Linux 之后不会触发 OOM。我已经上传了我的 dmesg进程屠杀完成后。首先,OOM 杀死了我的 chrome 标签页,但它们是无辜的,因为在它们全部被杀死后,OOM 仍然会触发。
但即使它们都被杀死了,OOM 仍然会触发并寻找其他可以牺牲的进程。它会进入由我的 make 命令启动的 java 进程。它会一个接一个地杀死它们: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 构建中可能存在什么泄漏?
答案1
这并不异常。我之前曾与构建自定义 Android 发行版的人讨论过这个问题。您需要的内存将远多于 8 GB。我记得他们使用的是 32 GB 内存的机器。