gpt4 book ai didi

java - 在 Java 进程之间共享一 block (只读)内存

转载 作者:行者123 更新时间:2023-12-01 12:46:54 28 4
gpt4 key购买 nike

我正在编写一个运行用户提交的 Java 代码的 Java 应用程序。我在自己的沙箱中运行用户提交的每段代码。这个沙箱涉及(除其他外)在单独的进程、单独的 JVM 中运行每个代码提交(据我所知,除了字节码级别之外,没有其他方法可以可靠地控制所提交代码的内存和 CPU 使用情况)检查/分析)。

我希望每个沙盒进程都可以访问某个数据库。该数据库很大(大约 10 GB,将来可能会更大),并且用户提交的代码可能会对数据库进行数十亿次或多或少的随机访问。因此,用户提交的代码能够有效地访问数据库非常重要。

这就是我认为我应该做的:将数据库从主监督进程加载到内存中,然后为每个沙箱进程提供对加载的数据库的只读访问权限。我怎样才能做到这一点? (再次强调,我正在使用 Java 工作。)

还是我的想法有误?我应该尝试不同的方法吗?

最佳答案

考虑到您所讨论的数据量(10GB 或可能更多),我认为将其保留在内存中是不可行的。

我建议使用 SQLite 数据库解决方案。

从每个生成的进程中,您可以打开 read-only mode 中的数据库,并通过标准 JDBC 调用访问它,或者将其包装在您自己设计的某些 API 中。

这还有一个优点,如果性能成为问题,您可以转向成熟的数据库解决方案。

如果您不首先控制数据的格式,您可以轻松编写一个导入器,从新的数据文件更新 SQLite 数据库。

关于java - 在 Java 进程之间共享一 block (只读)内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24609523/

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