gpt4 book ai didi

java - Jena model.读取时间和内存问题

转载 作者:行者123 更新时间:2023-12-01 11:37:15 24 4
gpt4 key购买 nike

我正在尝试分析我使用 eclipse/jena 创建的语义 Web 项目的大型数据转储。我正在使用 tdb 数据库,它对于 2GB 工作正常,但我在处理超过 6GB 的文件时遇到内存问题。我的目标是从数据源中提取所有谓词对象和主语(并将它们写入 json 文件)。有没有一种方法可以直接查询 tdb 数据而无需将所有数据加载到模型中?另外:下面代码中的 model.read 是否也将整个数据存储在内存中?

        HttpSession session = request.getSession();
session.setAttribute("dataSource", data);
ServletContext servletContext = request.getServletContext();
String tdbPath = servletContext.getRealPath("/tdb");
File dir = new File(contextPath);
Dataset dataset = TDBFactory.createDataset(tdbPath);
Model model = dataset.getDefaultModel();
InputStream str = FileManager.get().open(data);
model.read(str,null);

最佳答案

示例中的 model.read 不会将所有内容读入内存,因为它由 TDB 支持。

在 servlet 中加载较大的文件并不是一个很好的用户体验。您可以使用批量加载器提前加载文件吗?

您需要确保 TDB 的缓存有 1G(64 位)或 2G(32 位 java)堆。 TDB 在 64 位以及堆上使用内存映射文件。

您可以使用 RDFDataMgr.parse` 以流式处理方式处理 RDF。

关于java - Jena model.读取时间和内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852302/

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