Skip to content

Commit febcb84

Browse files
fix memory leak (#60)
* fix memory leak * 2.4.2-RC1 * remove misleading auto-closeable --------- Co-authored-by: AboutBits Tech <tech@aboutbits.it>
1 parent 88fa1a0 commit febcb84

2 files changed

Lines changed: 11 additions & 8 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<groupId>it.aboutbits</groupId>
1313
<artifactId>spring-boot-toolbox</artifactId>
14-
<version>2.4.1</version>
14+
<version>2.4.2-RC1</version>
1515
<description>Utility library for Spring Boot projects.</description>
1616
<packaging>jar</packaging>
1717

src/main/java/it/aboutbits/springboot/toolbox/reflection/util/ClassScannerUtil.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,27 @@
66
import org.jspecify.annotations.NullMarked;
77

88
import java.lang.annotation.Annotation;
9+
import java.util.Arrays;
10+
import java.util.Map;
911
import java.util.Set;
12+
import java.util.concurrent.ConcurrentHashMap;
1013
import java.util.stream.Collectors;
1114

1215
@NullMarked
1316
public final class ClassScannerUtil {
17+
private static final Map<String, ClassScanner> CACHE = new ConcurrentHashMap<>();
18+
1419
private ClassScannerUtil() {
1520
}
1621

1722
public static ClassScanner getScannerForPackages(String... packages) {
18-
return new ClassScanner(packages);
23+
var cacheKey = Arrays.stream(packages)
24+
.sorted()
25+
.collect(Collectors.joining("|"));
26+
return CACHE.computeIfAbsent(cacheKey, _ -> new ClassScanner(packages));
1927
}
2028

21-
public static final class ClassScanner implements AutoCloseable {
29+
public static final class ClassScanner {
2230
private final ScanResult scanResult;
2331
private final String[] packages;
2432

@@ -51,10 +59,5 @@ public Set<Class<?>> getClassesAnnotatedWith(Class<? extends Annotation> clazz)
5159
ClassInfo::loadClass
5260
).collect(Collectors.toSet());
5361
}
54-
55-
@Override
56-
public void close() {
57-
scanResult.close();
58-
}
5962
}
6063
}

0 commit comments

Comments
 (0)