java xmx4g cp_Android7.0编译 jack常见错误类型及解决办法

在编译Android 7.0源码时遇到JACK内存溢出问题,错误提示为Out of memory error。解决方法是在jack-admin中增加-Xmx选项,如-Xmx4g,调整JACK服务器的堆大小。如果出现Jack server通信错误,可以尝试停止、卸载并重新安装JACK服务。
摘要由CSDN通过智能技术生成

我使用的源码为SudaMod,3.1分支的源代码,第一次编译Android M以上的源码,就莫名其妙的遇到了几个关于JACK的坑,以下就列举几个常见的错误以及解决办法。

第一个错误:

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'.

Warning: This may have producedpartial or corrupted output.

造成原因:

这个错误最傻瓜,解决方法在输出信息里已经提示得很明确了。错误大概意思是当前需要的堆大小超出限制,于是内存溢出了,尝试使用java 选项'-Xmx'.来增加堆大小。

解决方法:

(1)编辑 prebuilts/sdk/tools/jack-admin,找到第29行:

#

# Settings

#

JACK_HOME="${JACK_HOME:=$HOME/.jack-server}"

CLIENT_SETTING="${CLIENT_SETTING:=$HOME/.jack-settings}"

TMPDIR=${TMPDIR:=/tmp}

JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation}"

增加选项: -Xmx4096m,或是: -Xmx4g,修改好即为(二选一):

JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m}"

JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation  -Xmx4g}"

(2)编辑 prebuilts/sdk/tools/jack-admin,找到第454行:

RUNNING=$?

if [ "$RUNNING" = 0 ]; then

echo "Server is already running"

else

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"

增加选项: -Xmx4096m,或是: -Xmx4g,修改好即为(二选一):

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS-Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS-Xmx4g -cp $LAUNCHER_JAR $LAUNCHER_NAME"

推荐第一种解决方法,-Xmx后面为分配的堆大小,这个值根据你的电脑内存而定,标准为内存大小的4分之1。当不够的时候再自己增加。

第二个错误:

FAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar  2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS=\"-Dfile.encoding=UTF-8 -XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update server prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 4.8.ALPHA 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-2.28.RELEASE.jar 2.28.RELEASE || exit 47; prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-3.36.CANDIDATE.jar 3.36.CANDIDATE || exit 47; prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.7.BETA.jar 4.7.BETA || exit 47 )"

Jack server already installed in "/home/gesangtome/.jack-server"

Communication error with Jack server (77), try 'jack-diagnose' or see Jack server log

Failed to contact Jack server: Problem reading /home/gesangtome/.jack-server/server.pem. Try 'jack-diagnose'

Failed to contact Jack server: Problem reading /home/gesangtome/.jack-server/server.pem. Try 'jack-diagnose'

造成原因:

通过查看$HOME/.jack-server下的日志,定位到具体错误为:Failed to contact Jack server: Problem reading /home/gesangtome/.jack-server/server.pem. Try 'jack-diagnose',像这种情况,我们重新安装以下JACK服务,一些关键文件就重新生成了。

解决方法:

进入jack目录:cd ./prebuilts/sdk/tools/

先停止服务:jack-admin stop-server

再卸载服务:jack-admin uninstall-server

重新安装服务:jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值