gpt4 book ai didi

java - 由于堆内存已满,jUnits 花费的时间过长

转载 作者:行者123 更新时间:2023-12-02 05:20:18 25 4
gpt4 key购买 nike

对于我正在从事的项目之一,我们编写了 jUnit,它从文本文件读取请求,然后调用方法。在实际方法中,我们正在创建 PDF 报告,因此正在创建表、文档等对象,因此 jUnit 可用的堆内存很快就会耗尽,并且 jUnit 需要很长时间才能完成。

有什么方法可以确保一旦执行 jUnit,为其创建的所有对象都会从内存中收集垃圾吗?

我尝试在每个测试类的@AfterClass方法中使用System.gc()方法,但没有帮助。另外,尝试增加堆大小但结果相同。使用的框架是 Spring-boot 1.4.0JUnit 版本是 4.12

最佳答案

System.gc() 不保证垃圾收集器将会运行。

来自 JUnit 文档

By design, the tree of Test instances is built in one pass, then the tests are executed in a second pass. The test runner holds strong references to all Test instances for the duration of the test execution. This means that for a very long test run with many Test instances, none of the tests may be garbage collected until the end of the entire test run.

Therefore, if you allocate external or limited resources in a test, you are responsible for freeing those resources. Explicitly setting an object to null in the tearDown() method, for example, allows it to be garbage collected before the end of the entire test run.

简而言之。使用完对象引用后,请确保将它们设置为 null

关于java - 由于堆内存已满,jUnits 花费的时间过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56268002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com