diff --git a/binding/java/ReadMe.md b/binding/java/ReadMe.md index f6e06f7..ca5ac0b 100644 --- a/binding/java/ReadMe.md +++ b/binding/java/ReadMe.md @@ -7,7 +7,7 @@ org.lionsoul ip2region - 2.6.4 + 2.6.5 ``` @@ -41,7 +41,10 @@ public class SearcherTest { System.out.printf("failed to search(%s): %s\n", ip, e); } - // 3、备注:并发使用,每个线程需要创建一个独立的 searcher 对象单独使用。 + // 3、关闭资源 + searcher.close(); + + // 备注:并发使用,每个线程需要创建一个独立的 searcher 对象单独使用。 } } ``` @@ -86,6 +89,9 @@ public class SearcherTest { } catch (Exception e) { System.out.printf("failed to search(%s): %s\n", ip, e); } + + // 4、关闭资源 + searcher.close(); // 备注:每个线程需要单独创建一个独立的 Searcher 对象,但是都共享全局的制度 vIndex 缓存。 } @@ -132,6 +138,9 @@ public class SearcherTest { } catch (Exception e) { System.out.printf("failed to search(%s): %s\n", ip, e); } + + // 4、关闭资源 - 该 searcher 对象可以安全用于并发,等整个服务关闭的时候再关闭 searcher + // searcher.close(); // 备注:并发使用,用整个 xdb 数据缓存创建的查询对象可以安全的用于并发,也就是你可以把这个 searcher 对象做成全局对象去跨线程访问。 } diff --git a/binding/java/pom.xml b/binding/java/pom.xml index 5b2ad96..babaaee 100644 --- a/binding/java/pom.xml +++ b/binding/java/pom.xml @@ -4,7 +4,7 @@ org.lionsoul ip2region - 2.6.4 + 2.6.5 jar ip2region diff --git a/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java b/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java index 5aecbc8..fcdec4c 100644 --- a/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java +++ b/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java @@ -167,8 +167,10 @@ public class Searcher { } public static Header loadHeaderFromFile(String dbPath) throws IOException { - RandomAccessFile handle = new RandomAccessFile(dbPath, "r"); - return loadHeader(handle); + final RandomAccessFile handle = new RandomAccessFile(dbPath, "r"); + final Header header = loadHeader(handle); + handle.close(); + return header; } public static byte[] loadVectorIndex(RandomAccessFile handle) throws IOException { @@ -184,8 +186,10 @@ public class Searcher { } public static byte[] loadVectorIndexFromFile(String dbPath) throws IOException { - RandomAccessFile handle = new RandomAccessFile(dbPath, "r"); - return loadVectorIndex(handle); + final RandomAccessFile handle = new RandomAccessFile(dbPath, "r"); + final byte[] vIndex = loadVectorIndex(handle); + handle.close(); + return vIndex; } public static byte[] loadContent(RandomAccessFile handle) throws IOException { @@ -200,8 +204,10 @@ public class Searcher { } public static byte[] loadContentFromFile(String dbPath) throws IOException { - RandomAccessFile handle = new RandomAccessFile(dbPath, "r"); - return loadContent(handle); + final RandomAccessFile handle = new RandomAccessFile(dbPath, "r"); + final byte[] content = loadContent(handle); + handle.close(); + return content; } // --- End cache load util function