Android 7.1編譯到33%時出現JDK內存溢出的錯誤:
Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)). GC overhead limit exceeded. Try increasing heap size with java option '-Xmx<size>'. Warning: This may have produced partial or corrupted output.
錯誤日志里邊列出了問題並且已經給出了解決方案 - 增加Java虛擬機的-Xmx大小,即設置一個較大的堆內存上限。
所以,解決辦法是:
1、修改Jack的配置文件prebuilts/sdk/tools/jack-admin
這是一個管理Jack的shell腳本,找到start-server函數,直接修改其啟動參數,由原來的
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
更改為
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
此時Jack服務器仍然在后台執行,所以我們需要將其停止,然后重啟啟動(make會自動啟動Jack服務器)才能使得修改后的參數生效。
我們執行下面的命令此時Jack服務器仍然在后台執行,所以我們需要將其停止,然后重啟啟動(make會自動啟動Jack服務器)才能使得修改后的參數生效。
我們執行下面的命令:
#先停止服務 ./prebuilts/sdk/tools/jack-admin stop-server
#重新開始服務 ./prebuilts/sdk/tools/jack-admin start-server
詳細的錯誤日志里邊列出了問題並且已經給出了解決方案 - 增加Java虛擬機的-Xmx大小,即設置一個較大的堆內存上限。
