修复内存泄漏 (#1888)

* Fix memory leaks

* Cache icon in cell

* Lazy acquisition of availableCharsets
This commit is contained in:
Glavo
2022-12-02 17:27:52 +08:00
committed by GitHub
parent ea91ee91ec
commit a6231ac593
3 changed files with 25 additions and 19 deletions

View File

@@ -88,7 +88,7 @@ public final class CompressingUtils {
}
public static Charset findSuitableEncoding(Path zipFile) throws IOException {
return findSuitableEncoding(zipFile, Charset.availableCharsets().values());
return findSuitableEncoding(zipFile, null);
}
public static Charset findSuitableEncoding(Path zipFile, Collection<Charset> candidates) throws IOException {
@@ -98,7 +98,7 @@ public final class CompressingUtils {
}
public static Charset findSuitableEncoding(ZipFile zipFile) throws IOException {
return findSuitableEncoding(zipFile, Charset.availableCharsets().values());
return findSuitableEncoding(zipFile, null);
}
public static Charset findSuitableEncoding(ZipFile zipFile, Collection<Charset> candidates) throws IOException {
@@ -106,6 +106,9 @@ public final class CompressingUtils {
if (OperatingSystem.NATIVE_CHARSET != StandardCharsets.UTF_8 && testEncoding(zipFile, OperatingSystem.NATIVE_CHARSET))
return OperatingSystem.NATIVE_CHARSET;
if (candidates == null)
candidates = Charset.availableCharsets().values();
for (Charset charset : candidates)
if (charset != null && testEncoding(zipFile, charset))
return charset;
@@ -156,8 +159,6 @@ public final class CompressingUtils {
public FileSystem build() throws IOException {
if (autoDetectEncoding) {
if (!testEncoding(zip, encoding)) {
if (charsetCandidates == null)
charsetCandidates = Charset.availableCharsets().values();
encoding = findSuitableEncoding(zip, charsetCandidates);
}
}