当前位置: 首页 > 知识库问答 >
问题:

Android Robolectric:OutOfMemoryError-创建ArrayList时超出GC开销限制

周龙光
2023-03-14

我想为返回ArrayList的方法创建一个测试。ArrayList类型是一个名为DateItem的自定义对象。但是,当我尝试在测试代码(位于test文件夹中)中创建ArrayList时,测试失败,并显示以下消息:

java.lang.OutOfMemoryError: GC overhead limit exceeded

Process finished with exit code 255

这是我的密码:

var expectedDateItems: ArrayList<DateItem> = ArrayList()
val currentDate = date1Start
while (currentDate.isBefore(date1End)) {
    val dateItem = DateItem(currentDate, ArrayList())
    expectedDateItems.add(dateItem)
    currentDate.plusDays(1)
}

我想知道如何在我的测试代码中创建这样的ArrayList。我已经研究了这个答案,但它是针对整个应用程序的,而不仅仅是为了测试目的。如何为单元测试分配更多内存?

编辑:调试后,代码在以下行中失败:val dateItem=dateItem(currentDate,ArrayList())

共有1个答案

澹台昆
2023-03-14

实际上,由于currentDate,您有无穷的WHILE循环。plusDays(1)返回当前日期的副本。改为:

currentDate = currentDate.plusDays(1)
 类似资料:
  • 使用当我尝试构建我的项目时,这种错误越来越多: 错误:任务“:app:CompiledEbugJavaWithJavac”执行失败。OutofMemoryError:超出GC开销限制 有什么办法解决这个问题吗?

  • 我正在尝试预处理一个大的txt文件(10G),并将其存储在二进制文件中以备将来使用。当代码运行时,速度会减慢,并以 异常线程"main"java.lang.OutOfMemoryError: GC开销限制超过 输入文件具有以下结构 这是我正在使用的代码: 基本上,它通过in文件并将数据存储到对象HMbicnt(这是一个哈希映射)。一旦在第二列中遇到新值,它应该将对象写入输出文件,释放内存并继续。

  • 问题内容: 这是构建过程停止的错误消息,它表示尝试使用Java选项“ -Xmx”增加堆大小,但是在构建android源代码时我不知道如何配置它。 问题答案: 似乎Android生成文件中的错误-3500 MB的内存不足以在Android内部构建某些Java软件包。它是硬编码的值,您可以在build / core / config.mk中 找到它。现在,您可以在本地简单地增加它(但是很奇怪,它没有放

  • 问题内容: 我正在尝试建立一个包含2台服务器的Gridgain集群。 使用 GridDataLoader 将.csv文件中的数据(100万至5000万个数据)加载到Gridgain 。 从加载的数据中找到最小值,最大值,平均值等, 当在Eclipse中作为独立应用程序运行时,我得到正确的输出。 但是,在建立集群(eclipse环境中的2个服务器中的2个节点+我的Eclipse环境中的1个节点)的同

  • 问题内容: 我在一个程序中创建了这个错误,该程序创建了几个(数十万)HashMap对象,每个对象都有几个(15-20)文本条目。这些字符串必须全部收集(不分解成较小的数量),然后再提交给数据库。 根据Sun的说法,该错误发生“如果在垃圾回收上花费了太多时间:如果在垃圾回收上花费了总时间的98%以上,而回收不到2%的堆,则将引发OutOfMemoryError。 ”。 显然,可以使用命令行将参数传递

  • 问题内容: 我收到 java.lang.OutOfMemoryError: 在Android 1.4上运行gradle时, 超出了GC开销限制 …这是我的依赖: 如何解决? 问题答案: 将此添加到您的android闭包(构建gradle): 这样可以解决您的问题。不过,如果您遇到问题,请参见以下链接 GC开销限制超出错误