gpt4 book ai didi

java - 来自 Java 的多个 Clojure 实例?

转载 作者:行者123 更新时间:2023-12-01 17:08:03 29 4
gpt4 key购买 nike

我正在尝试创建一种编译为 Clojure 的脚本语言,然后在 JVM 上运行它。每个单独的脚本位于同一个 JVM 实例中,但以隔离的方式。

然而,当我看到实现时,我发现 Clojure 环境(命名空间等)是全局的,因此一个脚本可能对命名空间进行的任何更改都会影响后续脚本。

我想知道是否有一种方法可以在一个 JVM 中拥有多个临时的、隔离的 Clojure 环境实例。如果没有,我可以使用哪种策略来避免污染全局命名空间并避免潜在的内存泄漏。

最佳答案

如果您想以隔离的方式运行脚本,建议为每个脚本使用单独的类加载器 - 无论它是 clojure 还是任何其他类型的沙盒代码。

这将允许同一 namespace (即包)有多个实现。

我不确定 Clojure 类加载器是否能很好地配合此操作,因此需要进行一些实验。

您还需要在启用 SecurityManager 的情况下运行并定义策略,以防止沙盒代码访问文件系统、运行进程、打开服务器套接字等内容。

关于java - 来自 Java 的多个 Clojure 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61446993/

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