我使用耶拿創建三店(TDB功能)用下面的代碼後鎖定通過我的應用程序服務器(Glassfish),我不能刪除它們,直到我手動停止Glassfish並釋放它的鎖定。如上面的代碼所示,我想我正在關閉所有內容,所以我不明白爲什麼在文件上保留一個鎖。阿帕奇JENA TDB文件與Web應用程序的創建
2
A
回答
3
當你調用Dataset#close()
,該implementation代表調用到底層 DatasetGraphBase#close()
,然後最終委託給DatasetGraphTDB#_close()
。
這導致致電TripleTable#close()
和QuadTable#close()
。這兩個電話(幾個)NodeTupleTable#close()
。繼續間接地,這呼叫NodeTable#close()
和TupleTable#close()
。前者是一個接口,所以我們需要對你的實現中運行哪個類進行適當的猜測。後者遍歷一系列TupleIndex
對象,並在每個對象上調用close()
。 TupleIndex
也是一個接口。
只有一個來自TupleIndex
的後代有意義的層次結構,導致可以鎖定文件的東西,這導致我們到TupleIndexRecord#close()
。然後,我們可以按照具體實現方式RangeIndex
稱爲BPlusTree
一路下跌,直到我們看到的MappedByteBuffer
最終實際所有權,而閱讀的BlockAccessMapped#close()
實施,好像整個層次結構是正確關閉的事情,下至最後一堂課,但那this longstanding bug可能是罪魁禍首。從文檔:
一旦文件已被映射數量上的文件將 失敗,直到映射已被釋放的操作(例如刪除,截取到 尺寸小於映射的區域)。然而程序員不能精確控制 解映射發生的時間---通常是 它取決於終止處理或PhantomReference 隊列。
所以你有它。儘管Jena盡了最大的努力,但仍然無法控制該文件何時以Java取代映射。這最終成爲java中內存映射文件IO的折衷。
相關問題
- 1. 阿帕奇VirtualHosts的Rails應用程序
- 2. 與阿帕奇
- 3. 金字塔部署Web應用程序(阿帕奇/ mod_wsgi的)
- 4. 阿帕奇rotatelog
- 5. 阿帕奇FilesMatch
- 6. 阿帕奇rewrite_module
- 7. Jena TDB java.lang.ExceptionInInitializerError
- 8. Jena TDB在Python?
- 9. TDB Jena查詢
- 10. 背後阿帕奇CherryPy的應用,阿帕奇服務等應用
- 11. 阿帕奇在JSF
- 12. 阿帕奇:mod_rewrite的:
- 13. 阿帕奇安全
- 14. 問題與阿帕奇
- 15. 環路與阿帕奇2.4
- 16. 阿帕奇與C#類
- 17. 阿帕奇與JKMount和Alias
- 18. mutithreading在PHP /阿帕奇
- 19. 阿帕奇不XAMPP
- 20. java.lang.NoClassDefFoundError:組織/阿帕奇/公/蒸煮/蒸煮阿帕奇7
- 21. 阿帕奇Tomacat
- 22. 阿帕奇星火應用程序部署的最佳實踐
- 23. 阿帕奇重寫應用程序的名稱
- 24. 阿帕奇無視我的.htaccess文件
- 25. 寫作阿帕奇
- 26. 壓縮阿帕奇
- 27. 阿帕奇通過mod_auth_openidc
- 28. 阿帕奇VHOST 403
- 29. 使用OWLAPI訪問Jena TDB
- 30. 阿帕奇的RewriteRules
特別是如果你在Windows上,那麼取消映射文件是非常不可靠的 – RobV