当前从注册表中注销M3模型的首选方法是什么?
在我的项目中,我使用Rascal来分析大约100个大型java程序,而我的JVM正在慢慢耗尽内存。我在注册表的旧版本中找到了unregisterProject方法,并尝试使用这段代码,但我认为它不能正常工作。
public void unregisterProject(loc project, M3 model) {
rel[str scheme, loc name, loc src] perScheme
= {<name.scheme, name, src> | <name, src> <- model.declarations};
for (str scheme <- perScheme<scheme>) {
unregisterLocations(scheme, project.authority);
}
}我目前的解决办法是在这个问题上投入大量内存。
发布于 2020-03-03 17:42:02
这段代码可能会更好。它首先收集所有已注册的方案和授权对(并删除重复项),然后调用剩余的唯一对-- unregisterLocations函数。
public void unregisterProject(loc project, M3 model) {
schemesAndAuthorities
= {<name.scheme, name.authority> | <name, src> <- model.declarations};
for (<scheme, authority> <- schemesAndAuthorities) {
unregisterLocations(scheme, authority);
}
}你能试一试吗?如果它有效,我们可以通过一些测试将其添加回标准库。以前的代码基于不同的位置注册方式,因此取消注册不起作用。
https://stackoverflow.com/questions/60512080
复制相似问题