解決:編譯CM14.1 提示Jack “Out of memory error”錯誤


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大小,即設置一個較大的堆內存上限。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM