2022-07-24 Expiring Daemon because JVM heap space is exhausted Expiring Daemon because JVM heap space is exhausted

前言:as rn 离线包,报错:Expiring Daemon because JVM heap space is exhausted Expiring Daemon because JVM heap space is exhausted

由于JVM堆空间耗尽而导致守护进程过期由于JVM堆空间耗尽而导致守护进程过期

前排:我的as工具版本是:Android studio 4.2.2

排查:

推测是c盘空间不够,as无法完成打包,看了下c盘,只剩800多兆,清理一下c盘,重新build一下,不行,还是报同样的错误;

此时我的c盘空间还剩2.2G,内寸是16G的,而且就运行了as工具,其他软件都没开,那么为什么会说JVM堆空间耗尽呢?

嗯,百度说可能是as运行内存不足的原因导致的,我查了下资料,找到as的内存设置,发现设置了最大堆大小为1920兆,当前值:1280兆,我开始修改这个值。

操作:as工具==》Help==》Edit Custom VM Options

把值改成4096,就是设置最大内存为4g,根据提示,点击保存并自动重启,然后重新发包。结果我查看修改后的内存还是之前的值:1920兆。

于是继续百度。。

有眉目了,找到一篇文章说是控制as内存设置的文件studio.exe.vmoptions一共有2个,并且两个文件需要改成相同值才行,浅试一下。

一个studio.exe.vmoptions在C:\Program Files\Android\Android Studio\bin,它里面的代码如下:

-server
-Xms256m
-Xmx768m
-XX:ReservedCodeCacheSize=240m
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-Dsun.io.useCanonPrefixCache=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Dkotlinx.coroutines.debug=off
-Djdk.module.illegalAccess.silent=true
-Djna.nosys=true
-Djna.boot.library.path=
-Didea.vendor.name=Google

另一个studio.exe.vmoptions在C:\Users\你的用户名\AppData\Roaming\Google\AndroidStudio4.2,代码如下:

# custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html
-Xmx4096m

这里可以看到有一个studio.exe.vmoptions文件中设置了4096m,而另一个只有768m,把768m改成4096m。

保存,重启。结果:md!我去年买了一只表!!

结果,打开内存设置查看,还是显示1920兆,而不是4096兆。重新设置一遍,成了!呵呵。嗯,目前最大堆大小:2048m,当前值:4096。再次开始打包!

还是报同样错误,继续加大值,把4096换成8192,也就是给了8g的空间给它,然后其他值比如缓存256m该成了1024m,改完后开始打包,结果:打包了2次,取消了2次,原因:打包时间太长(1小时以上)。

解决方案:设置最大内存为你电脑内存的一半左右(比如16g内存,给它8个g),具体可以2个g2个g地加,加到它不会报错为止。

2022-07-28 已经好几天了,设置了8g内存后这个错误没有再出现,但是它仍旧一直在loading,一直在加载,没完没了。

2022-08-03 今天下午,我再次build了一下,没有等待很久,虽然buiild failed,但是我总算找到了为什么前端时间一直在加载的原因:c盘空间不足,设置再大的内存(比如我设置了8个g的内存),也没有作用,反而会令其一直在loading。

我把c盘的微信聊天文件转移到了d盘,足足腾出了7.53个g,这才是快速打包必备的硬件条件之一。

好了,8月3号build failed的报错提示为:Algorithm HmacPBESHA256 not available【算法HmacPBESHA256不可用】

到了这一步,我不想再用as打包了,我打算使用expo这个工具来报包。

使用expo,你甚至都看不到android和ios这两个包,关于打包的所有的事情全交给它,很方便,适合快速我这种布灵布灵的萌新。

 

posted @ 2022-07-28 11:05  叶乘风  阅读(2272)  评论(0编辑  收藏  举报