从 Java 执行声纳嵌入式 Runner 后无法删除 persistit_tempvol 文件

Unable to delete the persistit_tempvol file after Executing sonar Embedded Runner from Java

我有一组项目需要在其上执行 Sonar。一旦我执行声纳任务并发布结果,它就会删除目录 .sonartem 中除文件 persistit_tempvol 之外的所有文件。此文件被 Java SE 运行时间锁定,我无法删除它。

我想删除这个文件的原因是,一旦它开始执行另一个项目,它就会为该项目创建相同的文件,并且之前 persistit_tempvol 的数据仍在 Java 堆中。因此,在我 运行 几个项目之后,我实际上进入了 OutOfMemory。

我尝试增加堆内存,但项目数量非常多~100。我不想一个一个去处决他们。我想在循环中继续这样做。

我是运行ning sonar运行ner 2.4,windows7,Java8,sonar ant task 2.3,Sonar Qube 5.1

下面是我如何执行声纳 运行ner:

EmbeddedRunner.create().addProperties(properties)
            .unmask("org.apache.tools.ant").unmask("org.sonar.ant")
            .execute();

属性是声纳的属性文件。

我想我不能从声纳中删除这个文件,因为它被我的 JVM 锁定了。有什么办法可以删除这个文件吗?

我猜你真的不需要将 Ant 对象作为扩展传递,所以我建议你尝试使用 ForkedRunner 而不是 EmbeddedRunner。这将允许您从一个干净的 JVM 开始进行每个分析。

仅供参考,我们目前正在努力改进嵌入式模式以支持 运行 多次连续分析而没有任何资源泄漏(SQ Runner 2.5 + SQ server 5.2)。

ForkedRunner.create().addProperties(属性).execute();

这就是我所要做的,现在一切正常。谢谢:)