gpt4 book ai didi

java - 从 Java 执行 Sonar 嵌入式 Runner 后无法删除 persistit_tempvol 文件

转载 作者:行者123 更新时间:2023-11-29 03:08:10 26 4
gpt4 key购买 nike

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

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

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

我正在运行 sonarrunner 2.4、windows 7、Java 8、sonar ant task 2.3、Sonar Qube 5.1

这是我执行 Sonar 运行者的方式:

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

properties是sonar的属性文件。

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

最佳答案

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

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

关于java - 从 Java 执行 Sonar 嵌入式 Runner 后无法删除 persistit_tempvol 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30902855/

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