java - 当 Web 应用程序关闭时,Jena 离开 mem.FourTupleMap 和 mem.FourTupleMap.ThreeTupleMap
问题描述
问候耶拿大师
我编写了一个小型 Jersey (3.0.3) Web 应用程序,将从一堆静态文件创建的模型加载到内存数据集中 (Jena 4.2.0)
ds = DatasetFactory.createTxnMem();
Model m = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM_RDFS_INF);
那么,一堆
RDFDataMgr.read(m, f.getAbsolutePath());
最后
Reasoner owl = ReasonerRegistry.getOWLReasoner();
ds.setDefaultModel(ModelFactory.createInfModel(owl, m));
在 Tomcat 10 中运行的小型 Web 应用程序基本上只是查询该数据库并以各种格式返回数据集内容的位。但是我什至在进入查询部分之前就遇到了问题(即,我在查询之前启动应用程序并关闭)
数据集的加载(上图)发生在ServletContextListener.contextInitialized
阶段,我认为我在 contextDestroyed
. 存储在单例中的数据集以及灯熄灭时
TDBFactory.release(ds);
ds.close();
但是,在日志中,当我关闭应用程序时,我会得到一个列表
24-Oct-2021 12:40:23.743 SEVERE [Thread-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [gsip] created a ThreadLocal with key of type [java.lang.ThreadLocal.SuppliedThreadLocal] (value
[java.lang.ThreadLocal$SuppliedThreadLocal@3ddefd3b]) and a value of type [org.apache.jena.sparql.core.mem.FourTupleMap.ThreeTupleMap] (value [org.apache.jena.sparql.core.mem.FourTupleMap$ThreeTupleMap@4f7ca31b]) but failed to remove it
when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Oct-2021 12:40:23.747 SEVERE [Thread-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [gsip] created a ThreadLocal with key of type [java.lang.ThreadLocal.SuppliedThreadLocal] (value
[java.lang.ThreadLocal$SuppliedThreadLocal@3ddefd3b]) and a value of type [org.apache.jena.sparql.core.mem.FourTupleMap.ThreeTupleMap] (value [org.apache.jena.sparql.core.mem.FourTupleMap$ThreeTupleMap@4f7ca31b]) but failed to remove it
when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
注意,(不确定是否相关)有两种类型:
org.apache.jena.sparql.core.mem.FourTupleMap.ThreeTupleMap
和org.apache.jena.sparql.core.mem.FourTupleMap
, 总是前者的 1 对后者的 2。只需加载数据集就会创建 3mem.FourTupleMap.ThreeTupleMap
和 6mem.FourTupleMap
该列表将随着更多的互动而增长,但似乎最高为 99。
我在 Eclipse(Windows 10、jdk 15)或 docker(使用tomcat:jre11-openjdk-slim-buster
)中有同样的问题
任何提示我做错了什么?
谢谢
解决方案
推荐阅读
- popup - WFS 层 Openlayers 中的弹出窗口
- flask - 使用 render_template 传递查询参数
- python - 从 natsort 创建一个新的 pandas 索引列
- python - Python3 找不到库
- amazon-ec2 - 从目标组中识别不健康的实例 ID
- kotlin - 如何使用多个异步函数创建单个 Kotlin 流函数
- mailmerge - 是否有一个脚本可以将邮件合并分离为单个字母,但将标题保留在首页上?
- python - 将包含字典列表的数据框转换为 pyspark 中的多行
- c++ - 使用 llvm 时找不到 math.h
- sql - T-SQL 获取特定组的值