从 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();
这就是我所要做的,现在一切正常。谢谢:)
我有一组项目需要在其上执行 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();
这就是我所要做的,现在一切正常。谢谢:)