当从一个获得CloneCommand
, Git::close
仅此一项就足以释放 JGit 为给定存储库持有的所有文件句柄。它只是委托给Repository::close
在这种情况下。
我认为之间的区别Files::delete()
and File::delete()
您所看到的解释如下:
Files#delete(Path) 和 File#delete() 之间的区别 https://stackoverflow.com/questions/12139482/difference-between-filesdeletepath-and-filedelete
可能不相关,但我认为仍然值得一提的是最近引入的自动垃圾回收后台线程的问题。它还可能会阻止存储库被成功删除。请参阅此邮件列表主题:
https://dev.eclipse.org/mhonarc/lists/jgit-dev/msg03370.html https://dev.eclipse.org/mhonarc/lists/jgit-dev/msg03370.html
为了解决后一个问题,我在存储库的配置中禁用了 auto-gc,如下所示:
StoredConfig config = repository.getConfig();
config.setBoolean(CONFIG_GC_SECTION, null, CONFIG_KEY_AUTODETACH, false);
config.setInt(CONFIG_GC_SECTION, null, CONFIG_KEY_AUTOPACKLIMIT, -1);
config.setInt(CONFIG_GC_SECTION, null, CONFIG_KEY_AUTO, -1);
config.save();
常量是静态导入的ConfigConstants
.
这符合你的问题吗?