答疑:编译服务器故障处理
昨天有公众号读者(昵称Lousi)发来留言,说2021版在编译时出错,具体出错信息如下图第一条所示。遇到这种情况,首先要判断编译服务器是否运行正常。于是笔者提醒Lousi检查一下编译服务器的命令行窗口,看其中是否有“Server running”字样,结果是没有。
一条有用的信息是,命令行窗口中有这样的信息:
Error occurred during initialization of VM . Could not reserve enough space for 1048576KB,这是JAVA虚拟机的错误提示,表明可用的内存空间不够大,无法完成编译任务。解决方法如下。
①找到编译服务器的启动文件buildserver.bat,文件路径如下图所示。
②修改启动文件中与内存大小有关的设置,如下图中红线标记的部分。将其中两处的1024修改为较小一点的值,如512。
注:第一个1024用于启动编译服务器的主进程,第二个1024用于执行具体的编译任务。
保存修改后的启动文件,然后重新启动服务器(包括开发服务器与编译服务器),观察编译服务器命令行窗口中的信息,编译服务器启动成功,但是编译时出错,错误如下图所示。
错误发生在刚刚开始编译时,初步判断还是内存不足的问题,又提示读者将512改为256,之后,编译到50%时出错,错误信息为:Build error output: Your build failed due to an error in the DX stage, not because of an error in your program(错误发生在打包阶段,并非由程序本身引起)。
Lousi的机器操作系统为win7 32位,内存8GB,硬盘剩余空间50GB,这样配置的机器运行编译服务器应该是够用的。后来他又换了一台win10的机器,仍然出错。看来问题与硬件配置无关。
事后笔者在自己的机器上做了一个实验,现将实验过程记录如下。
1、机器配置:win10系统,内存32GB,硬盘剩余空间91GB。
2、保持buildserver.bat文件中的原有设置,即,两个数字都是1024,编译服务器可以正常启动,编译任务也可以顺利完成。
3、将buildserver.bat文件中的两个1024均修改为256,编译服务器可以正常启动,但编译任务无法完成,在50%处弹出错误窗口。
4、将buildserver.bat文件中的第一个1024修改为256,将第二个1024修改为512,编译服务器可以正常启动,但编译任务无法完成,现象同上。
5、将buildserver.bat文件中的第一个1024修改为256,将第二个1024保持不变,则编译服务器可以正常启动,同时,编译任务也顺利完成。
上述实验过程说明,用于执行编译任务的内存容量不能低于1024,而启动编译服务器的内存可以减小至256。以上内容供大家参考。