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