memory - 取消注册 M3 型号

标签 memory rascal

当前从注册表取消注册 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);
    }
}

我当前的解决方法是使用大量内存来解决该问题。

最佳答案

这段代码可能会工作得更好。它首先收集所有已注册的方案和权限对(并删除重复项),然后调用 unregisterLocations 函数来获取剩余的唯一对。

public void unregisterProject(loc project, M3 model) {
    schemesAndAuthorities 
      = {<name.scheme, name.authority> | <name, src> <- model.declarations};

    for (<scheme, authority> <- schemesAndAuthorities) {
           unregisterLocations(scheme, authority);
    }
}

你愿意尝试一下吗?如果它有效,我们可以通过一些测试将其添加回标准库。之前的代码基于不同的位置注册方式,因此取消注册不起作用。

关于memory - 取消注册 M3 型号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60512080/

相关文章:

c++ - 如果我在一个类中有一个静态属性并创建该类的许多新实例

c++ - 32B block ,连续和非连续内存访问

c - 循环插入二叉树

java - 加载不需要的 Java 类

rascal - Rascal 解决了表达式问题吗?

C++:我可以使用指针超出应用程序内存的范围吗?

rascal - Rascal可以在方法中返回操作系统吗?

java - 在 Rascal 中引用 Java 文件

java - 如何从文件创建 Rascal AST

rascal - 解析以换行符结尾的文件时出现问题