最近在做安卓单元测试相关的东西,用了jacoco来生成覆盖率报告,通过gradle指令运行jacoco之前需要运行testDebugUnitTest
但是有个问题一直无法解决,当测试案例较多时候,靠后的案例无法报错 java.lang.OutOfMemoryError: GC overhead limit exceeded ,分析gradle只给单元测试分配了默认的512m内存,单元测试案例执行完后不会及时释放内存,案例较多时候出现内存不足的情况
单元测试是放在test文件夹下,没有放在androidTest下
请问,是否有办法调整单元测试时候的运行内存
是针对app的单元测试吗
可以配置jvm内存参数
就是找到占用内存大的地方,把代码优化了,就不会出现这个问题了。
怎么找到需要优化的代码呢?就是通过heap dump生产jvm快照,通过分析快照找到占用内存大的对象,从而找到代码位置。
通过设置-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heapdump参数来生产快照,然后通过VisualVM或者MAT等工具分析快照内容进行定位。通过这个参数是将发生OOM时的堆内存所有信息写入快照文件,也就是说,如果此时堆内存中有敏感信息的话,那就可能造成信息泄漏了。